1 00:00:00,240 --> 00:00:02,030 you are many things and I can't explain 2 00:00:02,030 --> 00:00:02,040 you are many things and I can't explain 3 00:00:02,040 --> 00:00:03,550 you are many things and I can't explain it properly so you should introduce 4 00:00:03,550 --> 00:00:03,560 it properly so you should introduce 5 00:00:03,560 --> 00:00:05,869 it properly so you should introduce yourself but yeah your microphone's 6 00:00:05,869 --> 00:00:05,879 yourself but yeah your microphone's 7 00:00:05,879 --> 00:00:08,310 yourself but yeah your microphone's right here y press hard for the next 8 00:00:08,310 --> 00:00:08,320 right here y press hard for the next 9 00:00:08,320 --> 00:00:10,030 right here y press hard for the next slide backwards and a pointer if you 10 00:00:10,030 --> 00:00:10,040 slide backwards and a pointer if you 11 00:00:10,040 --> 00:00:12,190 slide backwards and a pointer if you need it great thanks thank you so much 12 00:00:12,190 --> 00:00:12,200 need it great thanks thank you so much 13 00:00:12,200 --> 00:00:16,269 need it great thanks thank you so much hi everyone um I'm Peter I'm going to 14 00:00:16,269 --> 00:00:16,279 hi everyone um I'm Peter I'm going to 15 00:00:16,279 --> 00:00:18,109 hi everyone um I'm Peter I'm going to kind of take things in a bit more of a 16 00:00:18,109 --> 00:00:18,119 kind of take things in a bit more of a 17 00:00:18,119 --> 00:00:20,390 kind of take things in a bit more of a philosophical kind of Direction um you 18 00:00:20,390 --> 00:00:20,400 philosophical kind of Direction um you 19 00:00:20,400 --> 00:00:21,950 philosophical kind of Direction um you know I work for a research lab these 20 00:00:21,950 --> 00:00:21,960 know I work for a research lab these 21 00:00:21,960 --> 00:00:25,189 know I work for a research lab these days so that's kind of my uh tendency um 22 00:00:25,189 --> 00:00:25,199 days so that's kind of my uh tendency um 23 00:00:25,199 --> 00:00:27,950 days so that's kind of my uh tendency um the lab is called Inc and switch uh we 24 00:00:27,950 --> 00:00:27,960 the lab is called Inc and switch uh we 25 00:00:27,960 --> 00:00:31,070 the lab is called Inc and switch uh we are interested in carrying on kind of 26 00:00:31,070 --> 00:00:31,080 are interested in carrying on kind of 27 00:00:31,080 --> 00:00:33,670 are interested in carrying on kind of the work of like engelbart and lick lier 28 00:00:33,670 --> 00:00:33,680 the work of like engelbart and lick lier 29 00:00:33,680 --> 00:00:35,630 the work of like engelbart and lick lier and Alan Kay and these people we 30 00:00:35,630 --> 00:00:35,640 and Alan Kay and these people we 31 00:00:35,640 --> 00:00:38,069 and Alan Kay and these people we interested in how computers can augment 32 00:00:38,069 --> 00:00:38,079 interested in how computers can augment 33 00:00:38,079 --> 00:00:38,869 interested in how computers can augment human 34 00:00:38,869 --> 00:00:38,879 human 35 00:00:38,879 --> 00:00:41,389 human intelligence and uh you know that's very 36 00:00:41,389 --> 00:00:41,399 intelligence and uh you know that's very 37 00:00:41,399 --> 00:00:43,430 intelligence and uh you know that's very high futin it's a lot of fun we get to 38 00:00:43,430 --> 00:00:43,440 high futin it's a lot of fun we get to 39 00:00:43,440 --> 00:00:45,590 high futin it's a lot of fun we get to dig into all kinds of weird corners of 40 00:00:45,590 --> 00:00:45,600 dig into all kinds of weird corners of 41 00:00:45,600 --> 00:00:47,910 dig into all kinds of weird corners of software and experimental interfaces and 42 00:00:47,910 --> 00:00:47,920 software and experimental interfaces and 43 00:00:47,920 --> 00:00:49,990 software and experimental interfaces and so on but before that I have written a 44 00:00:49,990 --> 00:00:50,000 so on but before that I have written a 45 00:00:50,000 --> 00:00:51,549 so on but before that I have written a lot of production software so I'm not 46 00:00:51,549 --> 00:00:51,559 lot of production software so I'm not 47 00:00:51,559 --> 00:00:52,869 lot of production software so I'm not just speaking to you from kind of an 48 00:00:52,869 --> 00:00:52,879 just speaking to you from kind of an 49 00:00:52,879 --> 00:00:55,910 just speaking to you from kind of an ivory Tower perspective I was one of the 50 00:00:55,910 --> 00:00:55,920 ivory Tower perspective I was one of the 51 00:00:55,920 --> 00:00:57,549 ivory Tower perspective I was one of the early employees at a platform as a 52 00:00:57,549 --> 00:00:57,559 early employees at a platform as a 53 00:00:57,559 --> 00:01:00,189 early employees at a platform as a service company uh called Heroku I've 54 00:01:00,189 --> 00:01:00,199 service company uh called Heroku I've 55 00:01:00,199 --> 00:01:03,389 service company uh called Heroku I've run a lot of postrest databases I've 56 00:01:03,389 --> 00:01:03,399 run a lot of postrest databases I've 57 00:01:03,399 --> 00:01:04,829 run a lot of postrest databases I've worked in game development as well I've 58 00:01:04,829 --> 00:01:04,839 worked in game development as well I've 59 00:01:04,839 --> 00:01:07,230 worked in game development as well I've built titles for DS and GBA I worked on 60 00:01:07,230 --> 00:01:07,240 built titles for DS and GBA I worked on 61 00:01:07,240 --> 00:01:09,469 built titles for DS and GBA I worked on this one teenage Zombies Invasion of the 62 00:01:09,469 --> 00:01:09,479 this one teenage Zombies Invasion of the 63 00:01:09,479 --> 00:01:12,030 this one teenage Zombies Invasion of the alien brain thingies for a Victoria BC 64 00:01:12,030 --> 00:01:12,040 alien brain thingies for a Victoria BC 65 00:01:12,040 --> 00:01:14,670 alien brain thingies for a Victoria BC game company and I've worked on desktop 66 00:01:14,670 --> 00:01:14,680 game company and I've worked on desktop 67 00:01:14,680 --> 00:01:17,429 game company and I've worked on desktop software like uh Songbird which was a 68 00:01:17,429 --> 00:01:17,439 software like uh Songbird which was a 69 00:01:17,439 --> 00:01:19,429 software like uh Songbird which was a crossplatform media player that lost 70 00:01:19,429 --> 00:01:19,439 crossplatform media player that lost 71 00:01:19,439 --> 00:01:20,390 crossplatform media player that lost fairly 72 00:01:20,390 --> 00:01:20,400 fairly 73 00:01:20,400 --> 00:01:24,109 fairly decisively um and besides that I've also 74 00:01:24,109 --> 00:01:24,119 decisively um and besides that I've also 75 00:01:24,119 --> 00:01:26,990 decisively um and besides that I've also uh worked in uh research um spending 76 00:01:26,990 --> 00:01:27,000 uh worked in uh research um spending 77 00:01:27,000 --> 00:01:29,590 uh worked in uh research um spending some time uh on for example this ship 78 00:01:29,590 --> 00:01:29,600 some time uh on for example this ship 79 00:01:29,600 --> 00:01:30,950 some time uh on for example this ship here this for Wilford laor it's a 80 00:01:30,950 --> 00:01:30,960 here this for Wilford laor it's a 81 00:01:30,960 --> 00:01:33,350 here this for Wilford laor it's a Canadian Arctic uh research Icebreaker 82 00:01:33,350 --> 00:01:33,360 Canadian Arctic uh research Icebreaker 83 00:01:33,360 --> 00:01:35,789 Canadian Arctic uh research Icebreaker so I spent some time in the Arctic and 84 00:01:35,789 --> 00:01:35,799 so I spent some time in the Arctic and 85 00:01:35,799 --> 00:01:37,190 so I spent some time in the Arctic and that actually helps inform my 86 00:01:37,190 --> 00:01:37,200 that actually helps inform my 87 00:01:37,200 --> 00:01:38,590 that actually helps inform my perspective on things too but we'll come 88 00:01:38,590 --> 00:01:38,600 perspective on things too but we'll come 89 00:01:38,600 --> 00:01:41,350 perspective on things too but we'll come back to that so I want to start by kind 90 00:01:41,350 --> 00:01:41,360 back to that so I want to start by kind 91 00:01:41,360 --> 00:01:44,149 back to that so I want to start by kind of saying hold on a sec before we get 92 00:01:44,149 --> 00:01:44,159 of saying hold on a sec before we get 93 00:01:44,159 --> 00:01:46,830 of saying hold on a sec before we get into kind of talking about why we can't 94 00:01:46,830 --> 00:01:46,840 into kind of talking about why we can't 95 00:01:46,840 --> 00:01:49,550 into kind of talking about why we can't make simple software we should probably 96 00:01:49,550 --> 00:01:49,560 make simple software we should probably 97 00:01:49,560 --> 00:01:51,709 make simple software we should probably Define our terms a little bit and talk 98 00:01:51,709 --> 00:01:51,719 Define our terms a little bit and talk 99 00:01:51,719 --> 00:01:54,709 Define our terms a little bit and talk about what complexity actually is so the 100 00:01:54,709 --> 00:01:54,719 about what complexity actually is so the 101 00:01:54,719 --> 00:01:57,310 about what complexity actually is so the first thing I want to clarify is that 102 00:01:57,310 --> 00:01:57,320 first thing I want to clarify is that 103 00:01:57,320 --> 00:02:00,789 first thing I want to clarify is that complexity is not difficulty 104 00:02:00,789 --> 00:02:00,799 complexity is not difficulty 105 00:02:00,799 --> 00:02:02,270 complexity is not difficulty right just because something is hard 106 00:02:02,270 --> 00:02:02,280 right just because something is hard 107 00:02:02,280 --> 00:02:03,789 right just because something is hard doesn't mean it's complicated like the 108 00:02:03,789 --> 00:02:03,799 doesn't mean it's complicated like the 109 00:02:03,799 --> 00:02:05,990 doesn't mean it's complicated like the ideas of calculus might be very 110 00:02:05,990 --> 00:02:06,000 ideas of calculus might be very 111 00:02:06,000 --> 00:02:08,150 ideas of calculus might be very difficult to internalize but they're 112 00:02:08,150 --> 00:02:08,160 difficult to internalize but they're 113 00:02:08,160 --> 00:02:10,869 difficult to internalize but they're actually very simple and elegant and I 114 00:02:10,869 --> 00:02:10,879 actually very simple and elegant and I 115 00:02:10,879 --> 00:02:12,910 actually very simple and elegant and I also want to draw a distinction between 116 00:02:12,910 --> 00:02:12,920 also want to draw a distinction between 117 00:02:12,920 --> 00:02:16,110 also want to draw a distinction between something being complex or just being 118 00:02:16,110 --> 00:02:16,120 something being complex or just being 119 00:02:16,120 --> 00:02:20,030 something being complex or just being kind of big a box of Lego is not 120 00:02:20,030 --> 00:02:20,040 kind of big a box of Lego is not 121 00:02:20,040 --> 00:02:22,309 kind of big a box of Lego is not necessarily a complicated thing though 122 00:02:22,309 --> 00:02:22,319 necessarily a complicated thing though 123 00:02:22,319 --> 00:02:24,630 necessarily a complicated thing though you can make a lot of things with it 124 00:02:24,630 --> 00:02:24,640 you can make a lot of things with it 125 00:02:24,640 --> 00:02:26,790 you can make a lot of things with it complexity occurs when your systems 126 00:02:26,790 --> 00:02:26,800 complexity occurs when your systems 127 00:02:26,800 --> 00:02:30,190 complexity occurs when your systems interact with each other okay and when 128 00:02:30,190 --> 00:02:30,200 interact with each other okay and when 129 00:02:30,200 --> 00:02:33,070 interact with each other okay and when it takes a lot to uh get things done 130 00:02:33,070 --> 00:02:33,080 it takes a lot to uh get things done 131 00:02:33,080 --> 00:02:35,790 it takes a lot to uh get things done because of that and more specifically I 132 00:02:35,790 --> 00:02:35,800 because of that and more specifically I 133 00:02:35,800 --> 00:02:37,790 because of that and more specifically I think the problem with complexity is 134 00:02:37,790 --> 00:02:37,800 think the problem with complexity is 135 00:02:37,800 --> 00:02:39,229 think the problem with complexity is that your systems can become 136 00:02:39,229 --> 00:02:39,239 that your systems can become 137 00:02:39,239 --> 00:02:41,309 that your systems can become unreasonable and when I say unreasonable 138 00:02:41,309 --> 00:02:41,319 unreasonable and when I say unreasonable 139 00:02:41,319 --> 00:02:43,390 unreasonable and when I say unreasonable I don't mean in kind of like a sort of 140 00:02:43,390 --> 00:02:43,400 I don't mean in kind of like a sort of 141 00:02:43,400 --> 00:02:45,470 I don't mean in kind of like a sort of colloquial sense what I mean is that you 142 00:02:45,470 --> 00:02:45,480 colloquial sense what I mean is that you 143 00:02:45,480 --> 00:02:47,949 colloquial sense what I mean is that you literally cannot reason about them you 144 00:02:47,949 --> 00:02:47,959 literally cannot reason about them you 145 00:02:47,959 --> 00:02:50,509 literally cannot reason about them you don't have the ability to predict what's 146 00:02:50,509 --> 00:02:50,519 don't have the ability to predict what's 147 00:02:50,519 --> 00:02:51,550 don't have the ability to predict what's going to 148 00:02:51,550 --> 00:02:51,560 going to 149 00:02:51,560 --> 00:02:53,589 going to happen and a lot of the time that's a 150 00:02:53,589 --> 00:02:53,599 happen and a lot of the time that's a 151 00:02:53,599 --> 00:02:55,070 happen and a lot of the time that's a problem because you got work to do and 152 00:02:55,070 --> 00:02:55,080 problem because you got work to do and 153 00:02:55,080 --> 00:02:56,670 problem because you got work to do and the thing is crashing and you don't know 154 00:02:56,670 --> 00:02:56,680 the thing is crashing and you don't know 155 00:02:56,680 --> 00:02:59,190 the thing is crashing and you don't know why but a complex system can also be 156 00:02:59,190 --> 00:02:59,200 why but a complex system can also be 157 00:02:59,200 --> 00:03:01,670 why but a complex system can also be generative and surprising if you harness 158 00:03:01,670 --> 00:03:01,680 generative and surprising if you harness 159 00:03:01,680 --> 00:03:04,430 generative and surprising if you harness that complexity in positive 160 00:03:04,430 --> 00:03:04,440 that complexity in positive 161 00:03:04,440 --> 00:03:06,789 that complexity in positive Ways last before we get into it I want 162 00:03:06,789 --> 00:03:06,799 Ways last before we get into it I want 163 00:03:06,799 --> 00:03:09,350 Ways last before we get into it I want to make just a very small uh detail 164 00:03:09,350 --> 00:03:09,360 to make just a very small uh detail 165 00:03:09,360 --> 00:03:12,350 to make just a very small uh detail point for the uh more pedantic in the 166 00:03:12,350 --> 00:03:12,360 point for the uh more pedantic in the 167 00:03:12,360 --> 00:03:15,509 point for the uh more pedantic in the audience some people draw a uh very 168 00:03:15,509 --> 00:03:15,519 audience some people draw a uh very 169 00:03:15,519 --> 00:03:17,990 audience some people draw a uh very specific difference between uh complex 170 00:03:17,990 --> 00:03:18,000 specific difference between uh complex 171 00:03:18,000 --> 00:03:20,630 specific difference between uh complex systems from sort of chaos math and like 172 00:03:20,630 --> 00:03:20,640 systems from sort of chaos math and like 173 00:03:20,640 --> 00:03:22,589 systems from sort of chaos math and like emerging complexity we'll talk a little 174 00:03:22,589 --> 00:03:22,599 emerging complexity we'll talk a little 175 00:03:22,599 --> 00:03:24,949 emerging complexity we'll talk a little bit about that H as distinguished from 176 00:03:24,949 --> 00:03:24,959 bit about that H as distinguished from 177 00:03:24,959 --> 00:03:27,030 bit about that H as distinguished from complicated systems where you have a lot 178 00:03:27,030 --> 00:03:27,040 complicated systems where you have a lot 179 00:03:27,040 --> 00:03:30,110 complicated systems where you have a lot of just kind of mess I'm kind kind of 180 00:03:30,110 --> 00:03:30,120 of just kind of mess I'm kind kind of 181 00:03:30,120 --> 00:03:32,070 of just kind of mess I'm kind kind of going to float back and forth across 182 00:03:32,070 --> 00:03:32,080 going to float back and forth across 183 00:03:32,080 --> 00:03:33,270 going to float back and forth across both of these without a lot of 184 00:03:33,270 --> 00:03:33,280 both of these without a lot of 185 00:03:33,280 --> 00:03:34,630 both of these without a lot of Distinction because I think in this 186 00:03:34,630 --> 00:03:34,640 Distinction because I think in this 187 00:03:34,640 --> 00:03:38,789 Distinction because I think in this context either one can cause similar 188 00:03:38,789 --> 00:03:38,799 context either one can cause similar 189 00:03:38,799 --> 00:03:43,309 context either one can cause similar effects okay so we're going to begin 190 00:03:43,309 --> 00:03:43,319 effects okay so we're going to begin 191 00:03:43,319 --> 00:03:47,350 effects okay so we're going to begin with a non-comprehensive look at 192 00:03:47,350 --> 00:03:47,360 with a non-comprehensive look at 193 00:03:47,360 --> 00:03:49,390 with a non-comprehensive look at complexity and more specifically we're 194 00:03:49,390 --> 00:03:49,400 complexity and more specifically we're 195 00:03:49,400 --> 00:03:51,509 complexity and more specifically we're going to kind of like pick some cherry 196 00:03:51,509 --> 00:03:51,519 going to kind of like pick some cherry 197 00:03:51,519 --> 00:03:53,390 going to kind of like pick some cherry pick some examples sort of from fake 198 00:03:53,390 --> 00:03:53,400 pick some examples sort of from fake 199 00:03:53,400 --> 00:03:55,869 pick some examples sort of from fake industrial sort of scenarios where you 200 00:03:55,869 --> 00:03:55,879 industrial sort of scenarios where you 201 00:03:55,879 --> 00:03:57,869 industrial sort of scenarios where you can begin with something simple and end 202 00:03:57,869 --> 00:03:57,879 can begin with something simple and end 203 00:03:57,879 --> 00:04:00,350 can begin with something simple and end up with something complicated 204 00:04:00,350 --> 00:04:00,360 up with something complicated 205 00:04:00,360 --> 00:04:03,069 up with something complicated so I'm going to start with like the most 206 00:04:03,069 --> 00:04:03,079 so I'm going to start with like the most 207 00:04:03,079 --> 00:04:04,949 so I'm going to start with like the most basic of all reasons why your software 208 00:04:04,949 --> 00:04:04,959 basic of all reasons why your software 209 00:04:04,959 --> 00:04:07,149 basic of all reasons why your software gets complicated and that's you know the 210 00:04:07,149 --> 00:04:07,159 gets complicated and that's you know the 211 00:04:07,159 --> 00:04:08,830 gets complicated and that's you know the first version of your code you just 212 00:04:08,830 --> 00:04:08,840 first version of your code you just 213 00:04:08,840 --> 00:04:10,350 first version of your code you just write the happy path everything's 214 00:04:10,350 --> 00:04:10,360 write the happy path everything's 215 00:04:10,360 --> 00:04:12,270 write the happy path everything's glorious and and software can be really 216 00:04:12,270 --> 00:04:12,280 glorious and and software can be really 217 00:04:12,280 --> 00:04:13,910 glorious and and software can be really simple when it lives in an idealized 218 00:04:13,910 --> 00:04:13,920 simple when it lives in an idealized 219 00:04:13,920 --> 00:04:16,150 simple when it lives in an idealized world and everything is fine and so you 220 00:04:16,150 --> 00:04:16,160 world and everything is fine and so you 221 00:04:16,160 --> 00:04:17,349 world and everything is fine and so you know here's like a really simple 222 00:04:17,349 --> 00:04:17,359 know here's like a really simple 223 00:04:17,359 --> 00:04:20,390 know here's like a really simple imaginary you know pseudo code web thing 224 00:04:20,390 --> 00:04:20,400 imaginary you know pseudo code web thing 225 00:04:20,400 --> 00:04:22,110 imaginary you know pseudo code web thing great we got a get request to our 226 00:04:22,110 --> 00:04:22,120 great we got a get request to our 227 00:04:22,120 --> 00:04:23,749 great we got a get request to our application you know we're going to go 228 00:04:23,749 --> 00:04:23,759 application you know we're going to go 229 00:04:23,759 --> 00:04:25,030 application you know we're going to go fetch something from the database and 230 00:04:25,030 --> 00:04:25,040 fetch something from the database and 231 00:04:25,040 --> 00:04:27,350 fetch something from the database and say hello there this is a Hello World 232 00:04:27,350 --> 00:04:27,360 say hello there this is a Hello World 233 00:04:27,360 --> 00:04:30,510 say hello there this is a Hello World app of web apps server apps great it 234 00:04:30,510 --> 00:04:30,520 app of web apps server apps great it 235 00:04:30,520 --> 00:04:32,990 app of web apps server apps great it works fine you know if user 12 is me and 236 00:04:32,990 --> 00:04:33,000 works fine you know if user 12 is me and 237 00:04:33,000 --> 00:04:35,390 works fine you know if user 12 is me and user 10 is my friend KO and user fu is 238 00:04:35,390 --> 00:04:35,400 user 10 is my friend KO and user fu is 239 00:04:35,400 --> 00:04:38,230 user 10 is my friend KO and user fu is wait what ah 240 00:04:38,230 --> 00:04:38,240 wait what ah 241 00:04:38,240 --> 00:04:41,590 wait what ah right we got to validate the input okay 242 00:04:41,590 --> 00:04:41,600 right we got to validate the input okay 243 00:04:41,600 --> 00:04:43,749 right we got to validate the input okay so we'll validate the 244 00:04:43,749 --> 00:04:43,759 so we'll validate the 245 00:04:43,759 --> 00:04:46,629 so we'll validate the request now okay so we're validating the 246 00:04:46,629 --> 00:04:46,639 request now okay so we're validating the 247 00:04:46,639 --> 00:04:49,550 request now okay so we're validating the request and and that's good and oh geez 248 00:04:49,550 --> 00:04:49,560 request and and that's good and oh geez 249 00:04:49,560 --> 00:04:51,469 request and and that's good and oh geez I'm not really handling it if we don't 250 00:04:51,469 --> 00:04:51,479 I'm not really handling it if we don't 251 00:04:51,479 --> 00:04:53,390 I'm not really handling it if we don't validate the request and wait do I have 252 00:04:53,390 --> 00:04:53,400 validate the request and wait do I have 253 00:04:53,400 --> 00:04:56,430 validate the request and wait do I have to do this on every request I guess I 254 00:04:56,430 --> 00:04:56,440 to do this on every request I guess I 255 00:04:56,440 --> 00:04:57,990 to do this on every request I guess I have to do this on every request and am 256 00:04:57,990 --> 00:04:58,000 have to do this on every request and am 257 00:04:58,000 --> 00:05:02,830 have to do this on every request and am I doing it the same way on every 258 00:05:02,830 --> 00:05:02,840 259 00:05:02,840 --> 00:05:06,550 request in fact this exact pattern of 260 00:05:06,550 --> 00:05:06,560 request in fact this exact pattern of 261 00:05:06,560 --> 00:05:08,550 request in fact this exact pattern of validating user input and checking your 262 00:05:08,550 --> 00:05:08,560 validating user input and checking your 263 00:05:08,560 --> 00:05:10,430 validating user input and checking your arguments can lead to something that uh 264 00:05:10,430 --> 00:05:10,440 arguments can lead to something that uh 265 00:05:10,440 --> 00:05:11,990 arguments can lead to something that uh bratus and Patterson call shotgun 266 00:05:11,990 --> 00:05:12,000 bratus and Patterson call shotgun 267 00:05:12,000 --> 00:05:14,270 bratus and Patterson call shotgun parsing and shotgun parsing is kind of 268 00:05:14,270 --> 00:05:14,280 parsing and shotgun parsing is kind of 269 00:05:14,280 --> 00:05:15,870 parsing and shotgun parsing is kind of the idea that you know you're parsing 270 00:05:15,870 --> 00:05:15,880 the idea that you know you're parsing 271 00:05:15,880 --> 00:05:17,510 the idea that you know you're parsing your input but it's like someone's taken 272 00:05:17,510 --> 00:05:17,520 your input but it's like someone's taken 273 00:05:17,520 --> 00:05:19,710 your input but it's like someone's taken a shotgun to your code base because it's 274 00:05:19,710 --> 00:05:19,720 a shotgun to your code base because it's 275 00:05:19,720 --> 00:05:22,670 a shotgun to your code base because it's just blown through the whole code base 276 00:05:22,670 --> 00:05:22,680 just blown through the whole code base 277 00:05:22,680 --> 00:05:24,309 just blown through the whole code base and it can lead to very serious security 278 00:05:24,309 --> 00:05:24,319 and it can lead to very serious security 279 00:05:24,319 --> 00:05:25,590 and it can lead to very serious security vulnerabilities because you might 280 00:05:25,590 --> 00:05:25,600 vulnerabilities because you might 281 00:05:25,600 --> 00:05:28,430 vulnerabilities because you might carefully check an input in one place 282 00:05:28,430 --> 00:05:28,440 carefully check an input in one place 283 00:05:28,440 --> 00:05:30,550 carefully check an input in one place but not in another and a great talk from 284 00:05:30,550 --> 00:05:30,560 but not in another and a great talk from 285 00:05:30,560 --> 00:05:32,510 but not in another and a great talk from brwon 2012 about 286 00:05:32,510 --> 00:05:32,520 brwon 2012 about 287 00:05:32,520 --> 00:05:34,870 brwon 2012 about this so of course you know now we're 288 00:05:34,870 --> 00:05:34,880 this so of course you know now we're 289 00:05:34,880 --> 00:05:36,430 this so of course you know now we're going to be a little more careful so 290 00:05:36,430 --> 00:05:36,440 going to be a little more careful so 291 00:05:36,440 --> 00:05:38,629 going to be a little more careful so we're going to also you know if the 292 00:05:38,629 --> 00:05:38,639 we're going to also you know if the 293 00:05:38,639 --> 00:05:40,270 we're going to also you know if the database is down we don't want to send a 294 00:05:40,270 --> 00:05:40,280 database is down we don't want to send a 295 00:05:40,280 --> 00:05:42,909 database is down we don't want to send a 500 we're going to fail elegantly and as 296 00:05:42,909 --> 00:05:42,919 500 we're going to fail elegantly and as 297 00:05:42,919 --> 00:05:45,230 500 we're going to fail elegantly and as you go the more of these cases that you 298 00:05:45,230 --> 00:05:45,240 you go the more of these cases that you 299 00:05:45,240 --> 00:05:47,070 you go the more of these cases that you have to handle and the better the 300 00:05:47,070 --> 00:05:47,080 have to handle and the better the 301 00:05:47,080 --> 00:05:50,350 have to handle and the better the quality of your code is right the more 302 00:05:50,350 --> 00:05:50,360 quality of your code is right the more 303 00:05:50,360 --> 00:05:53,029 quality of your code is right the more conservative defensive thorough that you 304 00:05:53,029 --> 00:05:53,039 conservative defensive thorough that you 305 00:05:53,039 --> 00:05:55,790 conservative defensive thorough that you are like at this point now like the the 306 00:05:55,790 --> 00:05:55,800 are like at this point now like the the 307 00:05:55,800 --> 00:05:59,150 are like at this point now like the the actual logic of this method is beginning 308 00:05:59,150 --> 00:05:59,160 actual logic of this method is beginning 309 00:05:59,160 --> 00:06:02,270 actual logic of this method is beginning to dis disappear into all the edge case 310 00:06:02,270 --> 00:06:02,280 to dis disappear into all the edge case 311 00:06:02,280 --> 00:06:04,469 to dis disappear into all the edge case handling right we're we're well off the 312 00:06:04,469 --> 00:06:04,479 handling right we're we're well off the 313 00:06:04,479 --> 00:06:07,350 handling right we're we're well off the happy path now and so you know you can 314 00:06:07,350 --> 00:06:07,360 happy path now and so you know you can 315 00:06:07,360 --> 00:06:08,990 happy path now and so you know you can clean this up a little bit so for 316 00:06:08,990 --> 00:06:09,000 clean this up a little bit so for 317 00:06:09,000 --> 00:06:11,110 clean this up a little bit so for Imagine here in this case that you know 318 00:06:11,110 --> 00:06:11,120 Imagine here in this case that you know 319 00:06:11,120 --> 00:06:13,670 Imagine here in this case that you know we have a slightly uh better set of 320 00:06:13,670 --> 00:06:13,680 we have a slightly uh better set of 321 00:06:13,680 --> 00:06:15,710 we have a slightly uh better set of libraries more thoroughly written set of 322 00:06:15,710 --> 00:06:15,720 libraries more thoroughly written set of 323 00:06:15,720 --> 00:06:17,589 libraries more thoroughly written set of libraries we've moved the complexity 324 00:06:17,589 --> 00:06:17,599 libraries we've moved the complexity 325 00:06:17,599 --> 00:06:19,029 libraries we've moved the complexity down out of this method and we're sort 326 00:06:19,029 --> 00:06:19,039 down out of this method and we're sort 327 00:06:19,039 --> 00:06:20,870 down out of this method and we're sort of saying like well the database won't 328 00:06:20,870 --> 00:06:20,880 of saying like well the database won't 329 00:06:20,880 --> 00:06:22,390 of saying like well the database won't throw an exception right because 330 00:06:22,390 --> 00:06:22,400 throw an exception right because 331 00:06:22,400 --> 00:06:24,230 throw an exception right because exceptions are ugly and kind of subtle 332 00:06:24,230 --> 00:06:24,240 exceptions are ugly and kind of subtle 333 00:06:24,240 --> 00:06:26,150 exceptions are ugly and kind of subtle to handle well it'll just it'll return 334 00:06:26,150 --> 00:06:26,160 to handle well it'll just it'll return 335 00:06:26,160 --> 00:06:27,830 to handle well it'll just it'll return null if it can't do the job for whatever 336 00:06:27,830 --> 00:06:27,840 null if it can't do the job for whatever 337 00:06:27,840 --> 00:06:30,430 null if it can't do the job for whatever reason and we're going to say well we'll 338 00:06:30,430 --> 00:06:30,440 reason and we're going to say well we'll 339 00:06:30,440 --> 00:06:32,390 reason and we're going to say well we'll you know there's like a good type system 340 00:06:32,390 --> 00:06:32,400 you know there's like a good type system 341 00:06:32,400 --> 00:06:34,350 you know there's like a good type system that's handling parsing the input args 342 00:06:34,350 --> 00:06:34,360 that's handling parsing the input args 343 00:06:34,360 --> 00:06:37,110 that's handling parsing the input args before they get to us so you know we can 344 00:06:37,110 --> 00:06:37,120 before they get to us so you know we can 345 00:06:37,120 --> 00:06:38,230 before they get to us so you know we can we don't have to worry about that 346 00:06:38,230 --> 00:06:38,240 we don't have to worry about that 347 00:06:38,240 --> 00:06:40,189 we don't have to worry about that anymore and the value of 348 00:06:40,189 --> 00:06:40,199 anymore and the value of 349 00:06:40,199 --> 00:06:42,710 anymore and the value of well-written uh libraries and languages 350 00:06:42,710 --> 00:06:42,720 well-written uh libraries and languages 351 00:06:42,720 --> 00:06:44,830 well-written uh libraries and languages type systems and so on is that they can 352 00:06:44,830 --> 00:06:44,840 type systems and so on is that they can 353 00:06:44,840 --> 00:06:47,469 type systems and so on is that they can really simplify your code make it less 354 00:06:47,469 --> 00:06:47,479 really simplify your code make it less 355 00:06:47,479 --> 00:06:49,710 really simplify your code make it less complex by preventing you from have to 356 00:06:49,710 --> 00:06:49,720 complex by preventing you from have to 357 00:06:49,720 --> 00:06:52,589 complex by preventing you from have to carry around all of this mental state 358 00:06:52,589 --> 00:06:52,599 carry around all of this mental state 359 00:06:52,599 --> 00:06:53,830 carry around all of this mental state everywhere that you 360 00:06:53,830 --> 00:06:53,840 everywhere that you 361 00:06:53,840 --> 00:06:56,189 everywhere that you go and you know kind of my observation 362 00:06:56,189 --> 00:06:56,199 go and you know kind of my observation 363 00:06:56,199 --> 00:06:57,950 go and you know kind of my observation of this world is that like vigilance is 364 00:06:57,950 --> 00:06:57,960 of this world is that like vigilance is 365 00:06:57,960 --> 00:07:00,430 of this world is that like vigilance is not a strategy like we talk earlier 366 00:07:00,430 --> 00:07:00,440 not a strategy like we talk earlier 367 00:07:00,440 --> 00:07:02,869 not a strategy like we talk earlier about how you know if a system fails 368 00:07:02,869 --> 00:07:02,879 about how you know if a system fails 369 00:07:02,879 --> 00:07:04,830 about how you know if a system fails it's not oh the blameless postmortem 370 00:07:04,830 --> 00:07:04,840 it's not oh the blameless postmortem 371 00:07:04,840 --> 00:07:06,710 it's not oh the blameless postmortem it's not that the the developer failed 372 00:07:06,710 --> 00:07:06,720 it's not that the the developer failed 373 00:07:06,720 --> 00:07:08,550 it's not that the the developer failed it's that the system failed you know if 374 00:07:08,550 --> 00:07:08,560 it's that the system failed you know if 375 00:07:08,560 --> 00:07:10,110 it's that the system failed you know if you have security vulnerabilities in 376 00:07:10,110 --> 00:07:10,120 you have security vulnerabilities in 377 00:07:10,120 --> 00:07:11,350 you have security vulnerabilities in your code because you didn't handle 378 00:07:11,350 --> 00:07:11,360 your code because you didn't handle 379 00:07:11,360 --> 00:07:13,150 your code because you didn't handle input the answer isn't to berate 380 00:07:13,150 --> 00:07:13,160 input the answer isn't to berate 381 00:07:13,160 --> 00:07:15,230 input the answer isn't to berate yourself for not handling the input you 382 00:07:15,230 --> 00:07:15,240 yourself for not handling the input you 383 00:07:15,240 --> 00:07:16,909 yourself for not handling the input you know it's to step back to level up and 384 00:07:16,909 --> 00:07:16,919 know it's to step back to level up and 385 00:07:16,919 --> 00:07:19,469 know it's to step back to level up and say like well hold on why do I have to 386 00:07:19,469 --> 00:07:19,479 say like well hold on why do I have to 387 00:07:19,479 --> 00:07:21,830 say like well hold on why do I have to do this manually every 388 00:07:21,830 --> 00:07:21,840 do this manually every 389 00:07:21,840 --> 00:07:24,390 do this manually every time so so to strategically you want to 390 00:07:24,390 --> 00:07:24,400 time so so to strategically you want to 391 00:07:24,400 --> 00:07:26,589 time so so to strategically you want to minimize the scope of failures and and 392 00:07:26,589 --> 00:07:26,599 minimize the scope of failures and and 393 00:07:26,599 --> 00:07:28,550 minimize the scope of failures and and kind of design them out of your system 394 00:07:28,550 --> 00:07:28,560 kind of design them out of your system 395 00:07:28,560 --> 00:07:29,950 kind of design them out of your system and one way to do that is have a type 396 00:07:29,950 --> 00:07:29,960 and one way to do that is have a type 397 00:07:29,960 --> 00:07:31,390 and one way to do that is have a type system so you don't you know forget to 398 00:07:31,390 --> 00:07:31,400 system so you don't you know forget to 399 00:07:31,400 --> 00:07:33,469 system so you don't you know forget to check your nulls there are other 400 00:07:33,469 --> 00:07:33,479 check your nulls there are other 401 00:07:33,479 --> 00:07:34,550 check your nulls there are other approaches I don't think this is 402 00:07:34,550 --> 00:07:34,560 approaches I don't think this is 403 00:07:34,560 --> 00:07:38,189 approaches I don't think this is universally true but it's one way okay 404 00:07:38,189 --> 00:07:38,199 universally true but it's one way okay 405 00:07:38,199 --> 00:07:40,710 universally true but it's one way okay so let's talk about scale you know we 406 00:07:40,710 --> 00:07:40,720 so let's talk about scale you know we 407 00:07:40,720 --> 00:07:42,749 so let's talk about scale you know we all know as an array gets bigger you can 408 00:07:42,749 --> 00:07:42,759 all know as an array gets bigger you can 409 00:07:42,759 --> 00:07:44,909 all know as an array gets bigger you can have an O of n log n kind of sort 410 00:07:44,909 --> 00:07:44,919 have an O of n log n kind of sort 411 00:07:44,919 --> 00:07:46,670 have an O of n log n kind of sort algorithm great okay well let's you know 412 00:07:46,670 --> 00:07:46,680 algorithm great okay well let's you know 413 00:07:46,680 --> 00:07:48,350 algorithm great okay well let's you know scale's easy right so let's just imagine 414 00:07:48,350 --> 00:07:48,360 scale's easy right so let's just imagine 415 00:07:48,360 --> 00:07:50,230 scale's easy right so let's just imagine an admin panel for a web application you 416 00:07:50,230 --> 00:07:50,240 an admin panel for a web application you 417 00:07:50,240 --> 00:07:52,270 an admin panel for a web application you list your users looks kind of like this 418 00:07:52,270 --> 00:07:52,280 list your users looks kind of like this 419 00:07:52,280 --> 00:07:54,230 list your users looks kind of like this go to your database select all the users 420 00:07:54,230 --> 00:07:54,240 go to your database select all the users 421 00:07:54,240 --> 00:07:55,309 go to your database select all the users and then in your front end just show 422 00:07:55,309 --> 00:07:55,319 and then in your front end just show 423 00:07:55,319 --> 00:07:57,029 and then in your front end just show them all perfect easy it's fine you've 424 00:07:57,029 --> 00:07:57,039 them all perfect easy it's fine you've 425 00:07:57,039 --> 00:07:59,670 them all perfect easy it's fine you've only got 10 users who cares 426 00:07:59,670 --> 00:07:59,680 only got 10 users who cares 427 00:07:59,680 --> 00:08:01,710 only got 10 users who cares okay well now we're at 10 to the four 428 00:08:01,710 --> 00:08:01,720 okay well now we're at 10 to the four 429 00:08:01,720 --> 00:08:04,629 okay well now we're at 10 to the four okay you've got a thousand users or so 430 00:08:04,629 --> 00:08:04,639 okay you've got a thousand users or so 431 00:08:04,639 --> 00:08:06,629 okay you've got a thousand users or so okay well okay we can't just render all 432 00:08:06,629 --> 00:08:06,639 okay well okay we can't just render all 433 00:08:06,639 --> 00:08:08,550 okay well okay we can't just render all that on one screen okay well uh we're 434 00:08:08,550 --> 00:08:08,560 that on one screen okay well uh we're 435 00:08:08,560 --> 00:08:10,710 that on one screen okay well uh we're going to use one of those offset SQL 436 00:08:10,710 --> 00:08:10,720 going to use one of those offset SQL 437 00:08:10,720 --> 00:08:12,710 going to use one of those offset SQL things right we know about this and then 438 00:08:12,710 --> 00:08:12,720 things right we know about this and then 439 00:08:12,720 --> 00:08:15,110 things right we know about this and then we're going to need pagination I guess 440 00:08:15,110 --> 00:08:15,120 we're going to need pagination I guess 441 00:08:15,120 --> 00:08:16,510 we're going to need pagination I guess and you got to click through okay yeah 442 00:08:16,510 --> 00:08:16,520 and you got to click through okay yeah 443 00:08:16,520 --> 00:08:18,629 and you got to click through okay yeah sure we can still do this this is fine 444 00:08:18,629 --> 00:08:18,639 sure we can still do this this is fine 445 00:08:18,639 --> 00:08:19,950 sure we can still do this this is fine yeah you don't want to request all that 446 00:08:19,950 --> 00:08:19,960 yeah you don't want to request all that 447 00:08:19,960 --> 00:08:22,110 yeah you don't want to request all that it's pain to scroll through okay well 448 00:08:22,110 --> 00:08:22,120 it's pain to scroll through okay well 449 00:08:22,120 --> 00:08:23,990 it's pain to scroll through okay well now we're 10 to the six users we got a 450 00:08:23,990 --> 00:08:24,000 now we're 10 to the six users we got a 451 00:08:24,000 --> 00:08:26,710 now we're 10 to the six users we got a million actually that offset thing 452 00:08:26,710 --> 00:08:26,720 million actually that offset thing 453 00:08:26,720 --> 00:08:28,309 million actually that offset thing that's a problem if you have a lot of 454 00:08:28,309 --> 00:08:28,319 that's a problem if you have a lot of 455 00:08:28,319 --> 00:08:30,469 that's a problem if you have a lot of users because in order to generate you 456 00:08:30,469 --> 00:08:30,479 users because in order to generate you 457 00:08:30,479 --> 00:08:33,870 users because in order to generate you know page 8850 it actually selects all 458 00:08:33,870 --> 00:08:33,880 know page 8850 it actually selects all 459 00:08:33,880 --> 00:08:35,670 know page 8850 it actually selects all of those rows and Scrolls through them 460 00:08:35,670 --> 00:08:35,680 of those rows and Scrolls through them 461 00:08:35,680 --> 00:08:37,589 of those rows and Scrolls through them and just takes all of those results and 462 00:08:37,589 --> 00:08:37,599 and just takes all of those results and 463 00:08:37,599 --> 00:08:38,909 and just takes all of those results and just Chucks them on the floor until it 464 00:08:38,909 --> 00:08:38,919 just Chucks them on the floor until it 465 00:08:38,919 --> 00:08:40,909 just Chucks them on the floor until it gets the ones that you asked about and 466 00:08:40,909 --> 00:08:40,919 gets the ones that you asked about and 467 00:08:40,919 --> 00:08:42,670 gets the ones that you asked about and actually now even though nothing has 468 00:08:42,670 --> 00:08:42,680 actually now even though nothing has 469 00:08:42,680 --> 00:08:45,670 actually now even though nothing has changed about our problem statement like 470 00:08:45,670 --> 00:08:45,680 changed about our problem statement like 471 00:08:45,680 --> 00:08:47,910 changed about our problem statement like not only are the performance 472 00:08:47,910 --> 00:08:47,920 not only are the performance 473 00:08:47,920 --> 00:08:49,430 not only are the performance characteristics of the system starting 474 00:08:49,430 --> 00:08:49,440 characteristics of the system starting 475 00:08:49,440 --> 00:08:51,150 characteristics of the system starting to change and the user interface is 476 00:08:51,150 --> 00:08:51,160 to change and the user interface is 477 00:08:51,160 --> 00:08:53,710 to change and the user interface is starting to change but the the way that 478 00:08:53,710 --> 00:08:53,720 starting to change but the the way that 479 00:08:53,720 --> 00:08:55,470 starting to change but the the way that we interact with the problem is changing 480 00:08:55,470 --> 00:08:55,480 we interact with the problem is changing 481 00:08:55,480 --> 00:08:56,910 we interact with the problem is changing too because if you've got a million 482 00:08:56,910 --> 00:08:56,920 too because if you've got a million 483 00:08:56,920 --> 00:08:59,150 too because if you've got a million users the way to find a user is not to 484 00:08:59,150 --> 00:08:59,160 users the way to find a user is not to 485 00:08:59,160 --> 00:09:01,269 users the way to find a user is not to just like keep clicking next until you 486 00:09:01,269 --> 00:09:01,279 just like keep clicking next until you 487 00:09:01,279 --> 00:09:04,470 just like keep clicking next until you find them one page after oh page 350 488 00:09:04,470 --> 00:09:04,480 find them one page after oh page 350 489 00:09:04,480 --> 00:09:06,470 find them one page after oh page 350 okay I'm on the J's Okay click forward 490 00:09:06,470 --> 00:09:06,480 okay I'm on the J's Okay click forward 491 00:09:06,480 --> 00:09:08,509 okay I'm on the J's Okay click forward to change the query AR to force you 492 00:09:08,509 --> 00:09:08,519 to change the query AR to force you 493 00:09:08,519 --> 00:09:09,829 to change the query AR to force you we've all done these kinds of things 494 00:09:09,829 --> 00:09:09,839 we've all done these kinds of things 495 00:09:09,839 --> 00:09:11,430 we've all done these kinds of things when the tools didn't keep up with our 496 00:09:11,430 --> 00:09:11,440 when the tools didn't keep up with our 497 00:09:11,440 --> 00:09:14,590 when the tools didn't keep up with our admin systems but like the point I'm 498 00:09:14,590 --> 00:09:14,600 admin systems but like the point I'm 499 00:09:14,600 --> 00:09:16,470 admin systems but like the point I'm trying to make here is that you know 500 00:09:16,470 --> 00:09:16,480 trying to make here is that you know 501 00:09:16,480 --> 00:09:18,069 trying to make here is that you know once you start to reach like a 100 502 00:09:18,069 --> 00:09:18,079 once you start to reach like a 100 503 00:09:18,079 --> 00:09:20,870 once you start to reach like a 100 million users you know it's not even the 504 00:09:20,870 --> 00:09:20,880 million users you know it's not even the 505 00:09:20,880 --> 00:09:23,670 million users you know it's not even the same kind of problem anymore right the 506 00:09:23,670 --> 00:09:23,680 same kind of problem anymore right the 507 00:09:23,680 --> 00:09:26,470 same kind of problem anymore right the complexity that snuck in here is now 508 00:09:26,470 --> 00:09:26,480 complexity that snuck in here is now 509 00:09:26,480 --> 00:09:28,389 complexity that snuck in here is now that we have different responsibilities 510 00:09:28,389 --> 00:09:28,399 that we have different responsibilities 511 00:09:28,399 --> 00:09:30,310 that we have different responsibilities there are ethical there are legal there 512 00:09:30,310 --> 00:09:30,320 there are ethical there are legal there 513 00:09:30,320 --> 00:09:32,190 there are ethical there are legal there are policy responsibilities you probably 514 00:09:32,190 --> 00:09:32,200 are policy responsibilities you probably 515 00:09:32,200 --> 00:09:34,150 are policy responsibilities you probably have a team of people at your 516 00:09:34,150 --> 00:09:34,160 have a team of people at your 517 00:09:34,160 --> 00:09:35,750 have a team of people at your organization who are responsible for 518 00:09:35,750 --> 00:09:35,760 organization who are responsible for 519 00:09:35,760 --> 00:09:37,790 organization who are responsible for dealing with abuse some of these people 520 00:09:37,790 --> 00:09:37,800 dealing with abuse some of these people 521 00:09:37,800 --> 00:09:39,269 dealing with abuse some of these people are terrible and you want them off your 522 00:09:39,269 --> 00:09:39,279 are terrible and you want them off your 523 00:09:39,279 --> 00:09:41,110 are terrible and you want them off your platform and you can't find them right 524 00:09:41,110 --> 00:09:41,120 platform and you can't find them right 525 00:09:41,120 --> 00:09:43,829 platform and you can't find them right like it's a different thing and it's 526 00:09:43,829 --> 00:09:43,839 like it's a different thing and it's 527 00:09:43,839 --> 00:09:46,110 like it's a different thing and it's complicated because the environment has 528 00:09:46,110 --> 00:09:46,120 complicated because the environment has 529 00:09:46,120 --> 00:09:48,509 complicated because the environment has changed as much as anything 530 00:09:48,509 --> 00:09:48,519 changed as much as anything 531 00:09:48,519 --> 00:09:51,829 changed as much as anything else so everything changes when your 532 00:09:51,829 --> 00:09:51,839 else so everything changes when your 533 00:09:51,839 --> 00:09:53,590 else so everything changes when your scale changes it's not just like an 534 00:09:53,590 --> 00:09:53,600 scale changes it's not just like an 535 00:09:53,600 --> 00:09:56,430 scale changes it's not just like an algorithmic thing it's also the kinds of 536 00:09:56,430 --> 00:09:56,440 algorithmic thing it's also the kinds of 537 00:09:56,440 --> 00:09:58,790 algorithmic thing it's also the kinds of things that you're doing change and like 538 00:09:58,790 --> 00:09:58,800 things that you're doing change and like 539 00:09:58,800 --> 00:10:00,350 things that you're doing change and like in general my advice to someone who's 540 00:10:00,350 --> 00:10:00,360 in general my advice to someone who's 541 00:10:00,360 --> 00:10:02,190 in general my advice to someone who's built a lot of high-scale production 542 00:10:02,190 --> 00:10:02,200 built a lot of high-scale production 543 00:10:02,200 --> 00:10:04,949 built a lot of high-scale production systems through many orders of magnitude 544 00:10:04,949 --> 00:10:04,959 systems through many orders of magnitude 545 00:10:04,959 --> 00:10:07,870 systems through many orders of magnitude is that it's as harmful to build for the 546 00:10:07,870 --> 00:10:07,880 is that it's as harmful to build for the 547 00:10:07,880 --> 00:10:11,269 is that it's as harmful to build for the system of the future as it is to build 548 00:10:11,269 --> 00:10:11,279 system of the future as it is to build 549 00:10:11,279 --> 00:10:13,230 system of the future as it is to build an insufficient system for the present 550 00:10:13,230 --> 00:10:13,240 an insufficient system for the present 551 00:10:13,240 --> 00:10:14,870 an insufficient system for the present you know if you build the tools for 100 552 00:10:14,870 --> 00:10:14,880 you know if you build the tools for 100 553 00:10:14,880 --> 00:10:16,269 you know if you build the tools for 100 million users when you have a hundred 554 00:10:16,269 --> 00:10:16,279 million users when you have a hundred 555 00:10:16,279 --> 00:10:17,470 million users when you have a hundred users they're going to be completely 556 00:10:17,470 --> 00:10:17,480 users they're going to be completely 557 00:10:17,480 --> 00:10:19,190 users they're going to be completely unusable too and you're going to waste 558 00:10:19,190 --> 00:10:19,200 unusable too and you're going to waste 559 00:10:19,200 --> 00:10:20,710 unusable too and you're going to waste so much time trying to solve problems 560 00:10:20,710 --> 00:10:20,720 so much time trying to solve problems 561 00:10:20,720 --> 00:10:22,150 so much time trying to solve problems you don't have yet that you're going to 562 00:10:22,150 --> 00:10:22,160 you don't have yet that you're going to 563 00:10:22,160 --> 00:10:23,710 you don't have yet that you're going to miss out on all the benefits of being 564 00:10:23,710 --> 00:10:23,720 miss out on all the benefits of being 565 00:10:23,720 --> 00:10:25,750 miss out on all the benefits of being able to just look at all your users and 566 00:10:25,750 --> 00:10:25,760 able to just look at all your users and 567 00:10:25,760 --> 00:10:27,550 able to just look at all your users and see who they are and talk to them right 568 00:10:27,550 --> 00:10:27,560 see who they are and talk to them right 569 00:10:27,560 --> 00:10:29,590 see who they are and talk to them right so you need to be scale appropriate and 570 00:10:29,590 --> 00:10:29,600 so you need to be scale appropriate and 571 00:10:29,600 --> 00:10:31,710 so you need to be scale appropriate and kind of be looking 572 00:10:31,710 --> 00:10:31,720 kind of be looking 573 00:10:31,720 --> 00:10:34,030 kind of be looking ahead another way software can get 574 00:10:34,030 --> 00:10:34,040 ahead another way software can get 575 00:10:34,040 --> 00:10:36,310 ahead another way software can get complicated is with leaky abstractions 576 00:10:36,310 --> 00:10:36,320 complicated is with leaky abstractions 577 00:10:36,320 --> 00:10:37,790 complicated is with leaky abstractions and so here we have a platform that's a 578 00:10:37,790 --> 00:10:37,800 and so here we have a platform that's a 579 00:10:37,800 --> 00:10:40,670 and so here we have a platform that's a little bit skewed um and so complexity 580 00:10:40,670 --> 00:10:40,680 little bit skewed um and so complexity 581 00:10:40,680 --> 00:10:43,110 little bit skewed um and so complexity can kind of Bubble Up from under the 582 00:10:43,110 --> 00:10:43,120 can kind of Bubble Up from under the 583 00:10:43,120 --> 00:10:44,829 can kind of Bubble Up from under the water line through these imperfect 584 00:10:44,829 --> 00:10:44,839 water line through these imperfect 585 00:10:44,839 --> 00:10:47,350 water line through these imperfect extractions abstractions this is how you 586 00:10:47,350 --> 00:10:47,360 extractions abstractions this is how you 587 00:10:47,360 --> 00:10:49,389 extractions abstractions this is how you copy a string it's a nice handmade 588 00:10:49,389 --> 00:10:49,399 copy a string it's a nice handmade 589 00:10:49,399 --> 00:10:51,269 copy a string it's a nice handmade lowlevel this is an exerp from carigan 590 00:10:51,269 --> 00:10:51,279 lowlevel this is an exerp from carigan 591 00:10:51,279 --> 00:10:53,670 lowlevel this is an exerp from carigan and Richie 1988 second edition the 592 00:10:53,670 --> 00:10:53,680 and Richie 1988 second edition the 593 00:10:53,680 --> 00:10:55,430 and Richie 1988 second edition the programming language and this book was 594 00:10:55,430 --> 00:10:55,440 programming language and this book was 595 00:10:55,440 --> 00:10:57,430 programming language and this book was such a revelation for me like how it 596 00:10:57,430 --> 00:10:57,440 such a revelation for me like how it 597 00:10:57,440 --> 00:11:00,069 such a revelation for me like how it showed me the way colonel uh functions 598 00:11:00,069 --> 00:11:00,079 showed me the way colonel uh functions 599 00:11:00,079 --> 00:11:01,230 showed me the way colonel uh functions were really 600 00:11:01,230 --> 00:11:01,240 were really 601 00:11:01,240 --> 00:11:02,990 were really implemented no I'm just kidding they're 602 00:11:02,990 --> 00:11:03,000 implemented no I'm just kidding they're 603 00:11:03,000 --> 00:11:04,670 implemented no I'm just kidding they're not really implemented like this and 604 00:11:04,670 --> 00:11:04,680 not really implemented like this and 605 00:11:04,680 --> 00:11:06,509 not really implemented like this and they say here that this is how you know 606 00:11:06,509 --> 00:11:06,519 they say here that this is how you know 607 00:11:06,519 --> 00:11:09,150 they say here that this is how you know a c programmer would prefer to write 608 00:11:09,150 --> 00:11:09,160 a c programmer would prefer to write 609 00:11:09,160 --> 00:11:12,269 a c programmer would prefer to write string copy the C programmer in question 610 00:11:12,269 --> 00:11:12,279 string copy the C programmer in question 611 00:11:12,279 --> 00:11:13,710 string copy the C programmer in question has never forgotten to null terminate a 612 00:11:13,710 --> 00:11:13,720 has never forgotten to null terminate a 613 00:11:13,720 --> 00:11:16,629 has never forgotten to null terminate a string I see um but this is how string 614 00:11:16,629 --> 00:11:16,639 string I see um but this is how string 615 00:11:16,639 --> 00:11:20,190 string I see um but this is how string copy is actually implemented as of 2022 616 00:11:20,190 --> 00:11:20,200 copy is actually implemented as of 2022 617 00:11:20,200 --> 00:11:23,750 copy is actually implemented as of 2022 for Alpha in uh in Linux and actually 618 00:11:23,750 --> 00:11:23,760 for Alpha in uh in Linux and actually 619 00:11:23,760 --> 00:11:24,990 for Alpha in uh in Linux and actually this isn't how string copy is 620 00:11:24,990 --> 00:11:25,000 this isn't how string copy is 621 00:11:25,000 --> 00:11:27,470 this isn't how string copy is implemented this is like one page of 622 00:11:27,470 --> 00:11:27,480 implemented this is like one page of 623 00:11:27,480 --> 00:11:30,110 implemented this is like one page of assembler uh there's like 300 lines of 624 00:11:30,110 --> 00:11:30,120 assembler uh there's like 300 lines of 625 00:11:30,120 --> 00:11:33,230 assembler uh there's like 300 lines of assembly and really importantly and and 626 00:11:33,230 --> 00:11:33,240 assembly and really importantly and and 627 00:11:33,240 --> 00:11:35,750 assembly and really importantly and and intriguingly although the interface 628 00:11:35,750 --> 00:11:35,760 intriguingly although the interface 629 00:11:35,760 --> 00:11:38,030 intriguingly although the interface Remains the Same modern CPU 630 00:11:38,030 --> 00:11:38,040 Remains the Same modern CPU 631 00:11:38,040 --> 00:11:40,110 Remains the Same modern CPU architectures have so many more 632 00:11:40,110 --> 00:11:40,120 architectures have so many more 633 00:11:40,120 --> 00:11:42,670 architectures have so many more constraints around memory alignment and 634 00:11:42,670 --> 00:11:42,680 constraints around memory alignment and 635 00:11:42,680 --> 00:11:44,269 constraints around memory alignment and everything else that although the 636 00:11:44,269 --> 00:11:44,279 everything else that although the 637 00:11:44,279 --> 00:11:46,069 everything else that although the interface is preserved you can pass any 638 00:11:46,069 --> 00:11:46,079 interface is preserved you can pass any 639 00:11:46,079 --> 00:11:48,790 interface is preserved you can pass any pointers in and get values back the kind 640 00:11:48,790 --> 00:11:48,800 pointers in and get values back the kind 641 00:11:48,800 --> 00:11:51,150 pointers in and get values back the kind of performance characteristics of like 642 00:11:51,150 --> 00:11:51,160 of performance characteristics of like 643 00:11:51,160 --> 00:11:52,990 of performance characteristics of like doing an unaligned versus an aligned 644 00:11:52,990 --> 00:11:53,000 doing an unaligned versus an aligned 645 00:11:53,000 --> 00:11:56,949 doing an unaligned versus an aligned string copy will be dramatically 646 00:11:56,949 --> 00:11:56,959 string copy will be dramatically 647 00:11:56,959 --> 00:11:59,870 string copy will be dramatically different and so complexity here right 648 00:11:59,870 --> 00:11:59,880 different and so complexity here right 649 00:11:59,880 --> 00:12:01,790 different and so complexity here right like I think we can kind of call this a 650 00:12:01,790 --> 00:12:01,800 like I think we can kind of call this a 651 00:12:01,800 --> 00:12:03,350 like I think we can kind of call this a win right like we've got this 652 00:12:03,350 --> 00:12:03,360 win right like we've got this 653 00:12:03,360 --> 00:12:05,310 win right like we've got this superpowered computer under the hood now 654 00:12:05,310 --> 00:12:05,320 superpowered computer under the hood now 655 00:12:05,320 --> 00:12:06,829 superpowered computer under the hood now but it still kind of feels like that old 656 00:12:06,829 --> 00:12:06,839 but it still kind of feels like that old 657 00:12:06,839 --> 00:12:09,910 but it still kind of feels like that old galap they were running in 1988 you know 658 00:12:09,910 --> 00:12:09,920 galap they were running in 1988 you know 659 00:12:09,920 --> 00:12:12,430 galap they were running in 1988 you know and like that's cool that that it works 660 00:12:12,430 --> 00:12:12,440 and like that's cool that that it works 661 00:12:12,440 --> 00:12:16,670 and like that's cool that that it works but in a sense this API that's so simple 662 00:12:16,670 --> 00:12:16,680 but in a sense this API that's so simple 663 00:12:16,680 --> 00:12:18,910 but in a sense this API that's so simple is actually undermining the value of the 664 00:12:18,910 --> 00:12:18,920 is actually undermining the value of the 665 00:12:18,920 --> 00:12:21,350 is actually undermining the value of the system and there's a lot of magic 666 00:12:21,350 --> 00:12:21,360 system and there's a lot of magic 667 00:12:21,360 --> 00:12:24,030 system and there's a lot of magic happening to kind of hide this and so I 668 00:12:24,030 --> 00:12:24,040 happening to kind of hide this and so I 669 00:12:24,040 --> 00:12:25,470 happening to kind of hide this and so I feel very mixed about this because on 670 00:12:25,470 --> 00:12:25,480 feel very mixed about this because on 671 00:12:25,480 --> 00:12:26,949 feel very mixed about this because on the one hand you know it's sort of like 672 00:12:26,949 --> 00:12:26,959 the one hand you know it's sort of like 673 00:12:26,959 --> 00:12:28,910 the one hand you know it's sort of like SQL databases where like you can add an 674 00:12:28,910 --> 00:12:28,920 SQL databases where like you can add an 675 00:12:28,920 --> 00:12:30,710 SQL databases where like you can add an IND and change nothing else and things 676 00:12:30,710 --> 00:12:30,720 IND and change nothing else and things 677 00:12:30,720 --> 00:12:33,949 IND and change nothing else and things get faster but there's like a really 678 00:12:33,949 --> 00:12:33,959 get faster but there's like a really 679 00:12:33,959 --> 00:12:36,949 get faster but there's like a really important subtle like lie that's being 680 00:12:36,949 --> 00:12:36,959 important subtle like lie that's being 681 00:12:36,959 --> 00:12:39,310 important subtle like lie that's being told here but maybe this is good and 682 00:12:39,310 --> 00:12:39,320 told here but maybe this is good and 683 00:12:39,320 --> 00:12:41,110 told here but maybe this is good and maybe it's bad this is like a value 684 00:12:41,110 --> 00:12:41,120 maybe it's bad this is like a value 685 00:12:41,120 --> 00:12:43,949 maybe it's bad this is like a value judgment kind of question and whether 686 00:12:43,949 --> 00:12:43,959 judgment kind of question and whether 687 00:12:43,959 --> 00:12:45,230 judgment kind of question and whether you understand this is happening could 688 00:12:45,230 --> 00:12:45,240 you understand this is happening could 689 00:12:45,240 --> 00:12:46,990 you understand this is happening could be completely irrelevant or it could be 690 00:12:46,990 --> 00:12:47,000 be completely irrelevant or it could be 691 00:12:47,000 --> 00:12:48,310 be completely irrelevant or it could be the difference between the success and 692 00:12:48,310 --> 00:12:48,320 the difference between the success and 693 00:12:48,320 --> 00:12:50,590 the difference between the success and failure of a 694 00:12:50,590 --> 00:12:50,600 failure of a 695 00:12:50,600 --> 00:12:55,470 failure of a project okay so these are kind of like 696 00:12:55,470 --> 00:12:55,480 project okay so these are kind of like 697 00:12:55,480 --> 00:12:58,509 project okay so these are kind of like technical complexities that come in I 698 00:12:58,509 --> 00:12:58,519 technical complexities that come in I 699 00:12:58,519 --> 00:13:00,790 technical complexities that come in I want to talk about other sources of 700 00:13:00,790 --> 00:13:00,800 want to talk about other sources of 701 00:13:00,800 --> 00:13:03,509 want to talk about other sources of complexity different kinds of complexity 702 00:13:03,509 --> 00:13:03,519 complexity different kinds of complexity 703 00:13:03,519 --> 00:13:05,629 complexity different kinds of complexity and one really big source of complexity 704 00:13:05,629 --> 00:13:05,639 and one really big source of complexity 705 00:13:05,639 --> 00:13:07,550 and one really big source of complexity in my projects maybe your smarter than 706 00:13:07,550 --> 00:13:07,560 in my projects maybe your smarter than 707 00:13:07,560 --> 00:13:09,550 in my projects maybe your smarter than me and that's cool uh but it's when you 708 00:13:09,550 --> 00:13:09,560 me and that's cool uh but it's when you 709 00:13:09,560 --> 00:13:11,550 me and that's cool uh but it's when you have a gap between the problem you think 710 00:13:11,550 --> 00:13:11,560 have a gap between the problem you think 711 00:13:11,560 --> 00:13:13,750 have a gap between the problem you think you have or the problem you used to have 712 00:13:13,750 --> 00:13:13,760 you have or the problem you used to have 713 00:13:13,760 --> 00:13:15,710 you have or the problem you used to have and the problem you have right now and 714 00:13:15,710 --> 00:13:15,720 and the problem you have right now and 715 00:13:15,720 --> 00:13:17,150 and the problem you have right now and again we're going to use a toy example 716 00:13:17,150 --> 00:13:17,160 again we're going to use a toy example 717 00:13:17,160 --> 00:13:19,230 again we're going to use a toy example to illustrate this so you've got a users 718 00:13:19,230 --> 00:13:19,240 to illustrate this so you've got a users 719 00:13:19,240 --> 00:13:22,670 to illustrate this so you've got a users table just same app as before and you 720 00:13:22,670 --> 00:13:22,680 table just same app as before and you 721 00:13:22,680 --> 00:13:23,949 table just same app as before and you know your users there's a bunch of 722 00:13:23,949 --> 00:13:23,959 know your users there's a bunch of 723 00:13:23,959 --> 00:13:25,389 know your users there's a bunch of fields you got a first name and a last 724 00:13:25,389 --> 00:13:25,399 fields you got a first name and a last 725 00:13:25,399 --> 00:13:26,470 fields you got a first name and a last name and how do you get the first name 726 00:13:26,470 --> 00:13:26,480 name and how do you get the first name 727 00:13:26,480 --> 00:13:28,110 name and how do you get the first name and the last name it's 728 00:13:28,110 --> 00:13:28,120 and the last name it's 729 00:13:28,120 --> 00:13:32,750 and the last name it's easy guys you just split on a 730 00:13:32,750 --> 00:13:32,760 easy guys you just split on a 731 00:13:32,760 --> 00:13:36,910 easy guys you just split on a space as a van 732 00:13:36,910 --> 00:13:36,920 733 00:13:36,920 --> 00:13:40,590 hardenberg uh you can see how this might 734 00:13:40,590 --> 00:13:40,600 hardenberg uh you can see how this might 735 00:13:40,600 --> 00:13:41,990 hardenberg uh you can see how this might get you in trouble and in fact on my 736 00:13:41,990 --> 00:13:42,000 get you in trouble and in fact on my 737 00:13:42,000 --> 00:13:44,110 get you in trouble and in fact on my California driver's license it said that 738 00:13:44,110 --> 00:13:44,120 California driver's license it said that 739 00:13:44,120 --> 00:13:47,110 California driver's license it said that my middle name was van for many 740 00:13:47,110 --> 00:13:47,120 my middle name was van for many 741 00:13:47,120 --> 00:13:50,189 my middle name was van for many years and the problem here is that the 742 00:13:50,189 --> 00:13:50,199 years and the problem here is that the 743 00:13:50,199 --> 00:13:53,069 years and the problem here is that the model that you have for the problem 744 00:13:53,069 --> 00:13:53,079 model that you have for the problem 745 00:13:53,079 --> 00:13:56,269 model that you have for the problem doesn't actually map the problem domain 746 00:13:56,269 --> 00:13:56,279 doesn't actually map the problem domain 747 00:13:56,279 --> 00:13:59,230 doesn't actually map the problem domain successfully 748 00:13:59,230 --> 00:13:59,240 successfully 749 00:13:59,240 --> 00:14:01,829 successfully so what do you what do you 750 00:14:01,829 --> 00:14:01,839 so what do you what do you 751 00:14:01,839 --> 00:14:03,749 so what do you what do you do right and there are lots of things 752 00:14:03,749 --> 00:14:03,759 do right and there are lots of things 753 00:14:03,759 --> 00:14:05,310 do right and there are lots of things you can do you can rewrite from scratch 754 00:14:05,310 --> 00:14:05,320 you can do you can rewrite from scratch 755 00:14:05,320 --> 00:14:07,590 you can do you can rewrite from scratch you can patch around it and actually 756 00:14:07,590 --> 00:14:07,600 you can patch around it and actually 757 00:14:07,600 --> 00:14:09,389 you can patch around it and actually just as an aside for everybody in the 758 00:14:09,389 --> 00:14:09,399 just as an aside for everybody in the 759 00:14:09,399 --> 00:14:12,910 just as an aside for everybody in the room the w3c has a wonderful um essay 760 00:14:12,910 --> 00:14:12,920 room the w3c has a wonderful um essay 761 00:14:12,920 --> 00:14:15,310 room the w3c has a wonderful um essay about personal names around the world 762 00:14:15,310 --> 00:14:15,320 about personal names around the world 763 00:14:15,320 --> 00:14:17,110 about personal names around the world and just you know if you take one like 764 00:14:17,110 --> 00:14:17,120 and just you know if you take one like 765 00:14:17,120 --> 00:14:19,350 and just you know if you take one like little thing from this talk um don't use 766 00:14:19,350 --> 00:14:19,360 little thing from this talk um don't use 767 00:14:19,360 --> 00:14:20,910 little thing from this talk um don't use first name and last name don't use 768 00:14:20,910 --> 00:14:20,920 first name and last name don't use 769 00:14:20,920 --> 00:14:22,829 first name and last name don't use family name people's family names aren't 770 00:14:22,829 --> 00:14:22,839 family name people's family names aren't 771 00:14:22,839 --> 00:14:24,069 family name people's family names aren't accurate some people have them and 772 00:14:24,069 --> 00:14:24,079 accurate some people have them and 773 00:14:24,079 --> 00:14:25,910 accurate some people have them and others don't uh what you do is you have 774 00:14:25,910 --> 00:14:25,920 others don't uh what you do is you have 775 00:14:25,920 --> 00:14:27,670 others don't uh what you do is you have one field that is you know what is the 776 00:14:27,670 --> 00:14:27,680 one field that is you know what is the 777 00:14:27,680 --> 00:14:29,870 one field that is you know what is the full name and then the other one is if 778 00:14:29,870 --> 00:14:29,880 full name and then the other one is if 779 00:14:29,880 --> 00:14:32,350 full name and then the other one is if you need it what should we call you um 780 00:14:32,350 --> 00:14:32,360 you need it what should we call you um 781 00:14:32,360 --> 00:14:34,550 you need it what should we call you um it's like a much better 782 00:14:34,550 --> 00:14:34,560 it's like a much better 783 00:14:34,560 --> 00:14:38,509 it's like a much better model um also 784 00:14:38,509 --> 00:14:38,519 model um also 785 00:14:38,519 --> 00:14:40,870 model um also Unicode I know that's its own set of 786 00:14:40,870 --> 00:14:40,880 Unicode I know that's its own set of 787 00:14:40,880 --> 00:14:44,710 Unicode I know that's its own set of complexity but uh and so you know 788 00:14:44,710 --> 00:14:44,720 complexity but uh and so you know 789 00:14:44,720 --> 00:14:46,389 complexity but uh and so you know there's only so many things you can do 790 00:14:46,389 --> 00:14:46,399 there's only so many things you can do 791 00:14:46,399 --> 00:14:48,230 there's only so many things you can do when you have this problem right and 792 00:14:48,230 --> 00:14:48,240 when you have this problem right and 793 00:14:48,240 --> 00:14:49,870 when you have this problem right and like I had a really specific concrete 794 00:14:49,870 --> 00:14:49,880 like I had a really specific concrete 795 00:14:49,880 --> 00:14:51,430 like I had a really specific concrete example of this in a distributed system 796 00:14:51,430 --> 00:14:51,440 example of this in a distributed system 797 00:14:51,440 --> 00:14:54,310 example of this in a distributed system recently where like I had a mental model 798 00:14:54,310 --> 00:14:54,320 recently where like I had a mental model 799 00:14:54,320 --> 00:14:57,069 recently where like I had a mental model of how the system behaved and my tests 800 00:14:57,069 --> 00:14:57,079 of how the system behaved and my tests 801 00:14:57,079 --> 00:14:59,150 of how the system behaved and my tests demonstrated that it behaved that way 802 00:14:59,150 --> 00:14:59,160 demonstrated that it behaved that way 803 00:14:59,160 --> 00:15:00,629 demonstrated that it behaved that way and then in my production environment it 804 00:15:00,629 --> 00:15:00,639 and then in my production environment it 805 00:15:00,639 --> 00:15:02,230 and then in my production environment it behaved completely 806 00:15:02,230 --> 00:15:02,240 behaved completely 807 00:15:02,240 --> 00:15:04,870 behaved completely differently because of behaviors that 808 00:15:04,870 --> 00:15:04,880 differently because of behaviors that 809 00:15:04,880 --> 00:15:07,150 differently because of behaviors that were not modeled by my understanding of 810 00:15:07,150 --> 00:15:07,160 were not modeled by my understanding of 811 00:15:07,160 --> 00:15:09,269 were not modeled by my understanding of the problem and this is part of why 812 00:15:09,269 --> 00:15:09,279 the problem and this is part of why 813 00:15:09,279 --> 00:15:11,189 the problem and this is part of why distributed systems are so prone to this 814 00:15:11,189 --> 00:15:11,199 distributed systems are so prone to this 815 00:15:11,199 --> 00:15:14,230 distributed systems are so prone to this is because there's so many new free 816 00:15:14,230 --> 00:15:14,240 is because there's so many new free 817 00:15:14,240 --> 00:15:16,350 is because there's so many new free variables and and like articulation 818 00:15:16,350 --> 00:15:16,360 variables and and like articulation 819 00:15:16,360 --> 00:15:18,829 variables and and like articulation points where things can be fast or slow 820 00:15:18,829 --> 00:15:18,839 points where things can be fast or slow 821 00:15:18,839 --> 00:15:21,069 points where things can be fast or slow or where they can fail or you know 822 00:15:21,069 --> 00:15:21,079 or where they can fail or you know 823 00:15:21,079 --> 00:15:22,590 or where they can fail or you know arrive out of order and all these kinds 824 00:15:22,590 --> 00:15:22,600 arrive out of order and all these kinds 825 00:15:22,600 --> 00:15:24,470 arrive out of order and all these kinds of things and so when you have these 826 00:15:24,470 --> 00:15:24,480 of things and so when you have these 827 00:15:24,480 --> 00:15:26,790 of things and so when you have these kinds of model reality gaps you have to 828 00:15:26,790 --> 00:15:26,800 kinds of model reality gaps you have to 829 00:15:26,800 --> 00:15:28,790 kinds of model reality gaps you have to bridge them somehow and so what can you 830 00:15:28,790 --> 00:15:28,800 bridge them somehow and so what can you 831 00:15:28,800 --> 00:15:30,430 bridge them somehow and so what can you do well you can fix the problem you can 832 00:15:30,430 --> 00:15:30,440 do well you can fix the problem you can 833 00:15:30,440 --> 00:15:32,150 do well you can fix the problem you can improve your understanding and rewrite 834 00:15:32,150 --> 00:15:32,160 improve your understanding and rewrite 835 00:15:32,160 --> 00:15:35,230 improve your understanding and rewrite everything and like when you can do that 836 00:15:35,230 --> 00:15:35,240 everything and like when you can do that 837 00:15:35,240 --> 00:15:38,110 everything and like when you can do that it's probably 838 00:15:38,110 --> 00:15:38,120 it's probably 839 00:15:38,120 --> 00:15:40,949 it's probably best you can't really always do that 840 00:15:40,949 --> 00:15:40,959 best you can't really always do that 841 00:15:40,959 --> 00:15:42,829 best you can't really always do that though and more to the point you may 842 00:15:42,829 --> 00:15:42,839 though and more to the point you may 843 00:15:42,839 --> 00:15:44,509 though and more to the point you may still not actually you could see the 844 00:15:44,509 --> 00:15:44,519 still not actually you could see the 845 00:15:44,519 --> 00:15:46,309 still not actually you could see the problem but you may still not actually 846 00:15:46,309 --> 00:15:46,319 problem but you may still not actually 847 00:15:46,319 --> 00:15:48,509 problem but you may still not actually understand the solution right and so 848 00:15:48,509 --> 00:15:48,519 understand the solution right and so 849 00:15:48,519 --> 00:15:49,949 understand the solution right and so what can you do well you can hack around 850 00:15:49,949 --> 00:15:49,959 what can you do well you can hack around 851 00:15:49,959 --> 00:15:52,309 what can you do well you can hack around it right like I've put van hardenberg 852 00:15:52,309 --> 00:15:52,319 it right like I've put van hardenberg 853 00:15:52,319 --> 00:15:54,629 it right like I've put van hardenberg into a lot of text boxes without a space 854 00:15:54,629 --> 00:15:54,639 into a lot of text boxes without a space 855 00:15:54,639 --> 00:15:56,629 into a lot of text boxes without a space in it and you know where the first 856 00:15:56,629 --> 00:15:56,639 in it and you know where the first 857 00:15:56,639 --> 00:15:58,230 in it and you know where the first letter is capitalized and the H is 858 00:15:58,230 --> 00:15:58,240 letter is capitalized and the H is 859 00:15:58,240 --> 00:15:59,790 letter is capitalized and the H is lowercase and that's not how I spell my 860 00:15:59,790 --> 00:15:59,800 lowercase and that's not how I spell my 861 00:15:59,800 --> 00:16:01,189 lowercase and that's not how I spell my name but it is how a lot of systems 862 00:16:01,189 --> 00:16:01,199 name but it is how a lot of systems 863 00:16:01,199 --> 00:16:03,269 name but it is how a lot of systems spell my name you know or you can ignore 864 00:16:03,269 --> 00:16:03,279 spell my name you know or you can ignore 865 00:16:03,279 --> 00:16:05,550 spell my name you know or you can ignore the problem right like maybe it's fine 866 00:16:05,550 --> 00:16:05,560 the problem right like maybe it's fine 867 00:16:05,560 --> 00:16:07,269 the problem right like maybe it's fine and like genuinely it could be fine for 868 00:16:07,269 --> 00:16:07,279 and like genuinely it could be fine for 869 00:16:07,279 --> 00:16:08,990 and like genuinely it could be fine for your use case you're just like well I 870 00:16:08,990 --> 00:16:09,000 your use case you're just like well I 871 00:16:09,000 --> 00:16:11,189 your use case you're just like well I guess you know that Peter guy can suck 872 00:16:11,189 --> 00:16:11,199 guess you know that Peter guy can suck 873 00:16:11,199 --> 00:16:12,350 guess you know that Peter guy can suck it he'll deal with having his name 874 00:16:12,350 --> 00:16:12,360 it he'll deal with having his name 875 00:16:12,360 --> 00:16:16,110 it he'll deal with having his name spelled wrong and I do you know it's 876 00:16:16,110 --> 00:16:16,120 spelled wrong and I do you know it's 877 00:16:16,120 --> 00:16:17,389 spelled wrong and I do you know it's these are options that you have and 878 00:16:17,389 --> 00:16:17,399 these are options that you have and 879 00:16:17,399 --> 00:16:19,629 these are options that you have and there's like a great you know like meme 880 00:16:19,629 --> 00:16:19,639 there's like a great you know like meme 881 00:16:19,639 --> 00:16:21,470 there's like a great you know like meme series out there on the internet lies 882 00:16:21,470 --> 00:16:21,480 series out there on the internet lies 883 00:16:21,480 --> 00:16:23,670 series out there on the internet lies programmers believe about pretty much 884 00:16:23,670 --> 00:16:23,680 programmers believe about pretty much 885 00:16:23,680 --> 00:16:26,269 programmers believe about pretty much anything like all time zones are 1 hour 886 00:16:26,269 --> 00:16:26,279 anything like all time zones are 1 hour 887 00:16:26,279 --> 00:16:28,710 anything like all time zones are 1 hour apart uh half an hour later in Newan 888 00:16:28,710 --> 00:16:28,720 apart uh half an hour later in Newan 889 00:16:28,720 --> 00:16:30,430 apart uh half an hour later in Newan land 890 00:16:30,430 --> 00:16:30,440 land 891 00:16:30,440 --> 00:16:31,470 land and so I 892 00:16:31,470 --> 00:16:31,480 and so I 893 00:16:31,480 --> 00:16:33,790 and so I think this is a this is a very 894 00:16:33,790 --> 00:16:33,800 think this is a this is a very 895 00:16:33,800 --> 00:16:35,590 think this is a this is a very fundamental source of complexity but 896 00:16:35,590 --> 00:16:35,600 fundamental source of complexity but 897 00:16:35,600 --> 00:16:38,749 fundamental source of complexity but where things get really bad is when your 898 00:16:38,749 --> 00:16:38,759 where things get really bad is when your 899 00:16:38,759 --> 00:16:41,350 where things get really bad is when your problems start to multiply off each 900 00:16:41,350 --> 00:16:41,360 problems start to multiply off each 901 00:16:41,360 --> 00:16:44,389 problems start to multiply off each other and this of course is you know 902 00:16:44,389 --> 00:16:44,399 other and this of course is you know 903 00:16:44,399 --> 00:16:45,910 other and this of course is you know where you have kind of like compound 904 00:16:45,910 --> 00:16:45,920 where you have kind of like compound 905 00:16:45,920 --> 00:16:49,189 where you have kind of like compound interest on complexity so what happens 906 00:16:49,189 --> 00:16:49,199 interest on complexity so what happens 907 00:16:49,199 --> 00:16:51,749 interest on complexity so what happens if your problems um dimensionalize 908 00:16:51,749 --> 00:16:51,759 if your problems um dimensionalize 909 00:16:51,759 --> 00:16:54,389 if your problems um dimensionalize against each other so again imagine this 910 00:16:54,389 --> 00:16:54,399 against each other so again imagine this 911 00:16:54,399 --> 00:16:55,949 against each other so again imagine this web application you've got a bunch of 912 00:16:55,949 --> 00:16:55,959 web application you've got a bunch of 913 00:16:55,959 --> 00:16:57,790 web application you've got a bunch of different browsers to support you've got 914 00:16:57,790 --> 00:16:57,800 different browsers to support you've got 915 00:16:57,800 --> 00:16:59,509 different browsers to support you've got a bunch of different runtime 916 00:16:59,509 --> 00:16:59,519 a bunch of different runtime 917 00:16:59,519 --> 00:17:01,509 a bunch of different runtime environments to support different screen 918 00:17:01,509 --> 00:17:01,519 environments to support different screen 919 00:17:01,519 --> 00:17:03,749 environments to support different screen sizes Network speeds different Os or 920 00:17:03,749 --> 00:17:03,759 sizes Network speeds different Os or 921 00:17:03,759 --> 00:17:06,309 sizes Network speeds different Os or browser versions and so if you want to 922 00:17:06,309 --> 00:17:06,319 browser versions and so if you want to 923 00:17:06,319 --> 00:17:08,669 browser versions and so if you want to actually understand what's happening you 924 00:17:08,669 --> 00:17:08,679 actually understand what's happening you 925 00:17:08,679 --> 00:17:10,390 actually understand what's happening you know all of these things multiply 926 00:17:10,390 --> 00:17:10,400 know all of these things multiply 927 00:17:10,400 --> 00:17:12,549 know all of these things multiply against each other right and so you 928 00:17:12,549 --> 00:17:12,559 against each other right and so you 929 00:17:12,559 --> 00:17:14,470 against each other right and so you don't just have one runtime environment 930 00:17:14,470 --> 00:17:14,480 don't just have one runtime environment 931 00:17:14,480 --> 00:17:15,949 don't just have one runtime environment you might have one codebase but you have 932 00:17:15,949 --> 00:17:15,959 you might have one codebase but you have 933 00:17:15,959 --> 00:17:18,750 you might have one codebase but you have lots of different contexts so how can 934 00:17:18,750 --> 00:17:18,760 lots of different contexts so how can 935 00:17:18,760 --> 00:17:20,710 lots of different contexts so how can you know that you actually have correct 936 00:17:20,710 --> 00:17:20,720 you know that you actually have correct 937 00:17:20,720 --> 00:17:22,549 you know that you actually have correct functioning code because you know the 938 00:17:22,549 --> 00:17:22,559 functioning code because you know the 939 00:17:22,559 --> 00:17:24,110 functioning code because you know the old joke about Docker like well it 940 00:17:24,110 --> 00:17:24,120 old joke about Docker like well it 941 00:17:24,120 --> 00:17:25,429 old joke about Docker like well it worked on my computer well I guess we'll 942 00:17:25,429 --> 00:17:25,439 worked on my computer well I guess we'll 943 00:17:25,439 --> 00:17:27,309 worked on my computer well I guess we'll ship your computer well even that 944 00:17:27,309 --> 00:17:27,319 ship your computer well even that 945 00:17:27,319 --> 00:17:29,029 ship your computer well even that doesn't really work because once you get 946 00:17:29,029 --> 00:17:29,039 doesn't really work because once you get 947 00:17:29,039 --> 00:17:30,029 doesn't really work because once you get out into the real world there's 948 00:17:30,029 --> 00:17:30,039 out into the real world there's 949 00:17:30,039 --> 00:17:31,990 out into the real world there's different memory you know contexts or 950 00:17:31,990 --> 00:17:32,000 different memory you know contexts or 951 00:17:32,000 --> 00:17:33,590 different memory you know contexts or you're up against different loads or 952 00:17:33,590 --> 00:17:33,600 you're up against different loads or 953 00:17:33,600 --> 00:17:35,110 you're up against different loads or whatever else right you don't actually 954 00:17:35,110 --> 00:17:35,120 whatever else right you don't actually 955 00:17:35,120 --> 00:17:36,710 whatever else right you don't actually control the whole 956 00:17:36,710 --> 00:17:36,720 control the whole 957 00:17:36,720 --> 00:17:38,630 control the whole environment and so this is what really 958 00:17:38,630 --> 00:17:38,640 environment and so this is what really 959 00:17:38,640 --> 00:17:40,789 environment and so this is what really starts to kill you with complexity right 960 00:17:40,789 --> 00:17:40,799 starts to kill you with complexity right 961 00:17:40,799 --> 00:17:43,669 starts to kill you with complexity right and it's where all of those smaller 962 00:17:43,669 --> 00:17:43,679 and it's where all of those smaller 963 00:17:43,679 --> 00:17:45,789 and it's where all of those smaller inconsistencies play off each other to 964 00:17:45,789 --> 00:17:45,799 inconsistencies play off each other to 965 00:17:45,799 --> 00:17:53,909 inconsistencies play off each other to create an unknowables 966 00:17:53,909 --> 00:17:53,919 967 00:17:53,919 --> 00:17:56,669 like you don't use the native apis 968 00:17:56,669 --> 00:17:56,679 like you don't use the native apis 969 00:17:56,679 --> 00:17:58,390 like you don't use the native apis because God help you if you're trying to 970 00:17:58,390 --> 00:17:58,400 because God help you if you're trying to 971 00:17:58,400 --> 00:18:01,110 because God help you if you're trying to like figure out how to map all of these 972 00:18:01,110 --> 00:18:01,120 like figure out how to map all of these 973 00:18:01,120 --> 00:18:02,669 like figure out how to map all of these totally different environments down to 974 00:18:02,669 --> 00:18:02,679 totally different environments down to 975 00:18:02,679 --> 00:18:05,310 totally different environments down to one consistent thing and like one 976 00:18:05,310 --> 00:18:05,320 one consistent thing and like one 977 00:18:05,320 --> 00:18:07,149 one consistent thing and like one solution here is just to only have one 978 00:18:07,149 --> 00:18:07,159 solution here is just to only have one 979 00:18:07,159 --> 00:18:08,830 solution here is just to only have one thing as best you can and to minimize 980 00:18:08,830 --> 00:18:08,840 thing as best you can and to minimize 981 00:18:08,840 --> 00:18:09,710 thing as best you can and to minimize the difference between those 982 00:18:09,710 --> 00:18:09,720 the difference between those 983 00:18:09,720 --> 00:18:11,190 the difference between those environments and that's why you see sort 984 00:18:11,190 --> 00:18:11,200 environments and that's why you see sort 985 00:18:11,200 --> 00:18:13,789 environments and that's why you see sort of like ostensibly lazy electron apps 986 00:18:13,789 --> 00:18:13,799 of like ostensibly lazy electron apps 987 00:18:13,799 --> 00:18:16,070 of like ostensibly lazy electron apps from big companies because even worse 988 00:18:16,070 --> 00:18:16,080 from big companies because even worse 989 00:18:16,080 --> 00:18:17,310 from big companies because even worse than having to support all these 990 00:18:17,310 --> 00:18:17,320 than having to support all these 991 00:18:17,320 --> 00:18:18,830 than having to support all these different things is having to coordinate 992 00:18:18,830 --> 00:18:18,840 different things is having to coordinate 993 00:18:18,840 --> 00:18:21,230 different things is having to coordinate all the different people and teams to 994 00:18:21,230 --> 00:18:21,240 all the different people and teams to 995 00:18:21,240 --> 00:18:23,789 all the different people and teams to try and build features right and we've 996 00:18:23,789 --> 00:18:23,799 try and build features right and we've 997 00:18:23,799 --> 00:18:25,470 try and build features right and we've all many of us have been there right 998 00:18:25,470 --> 00:18:25,480 all many of us have been there right 999 00:18:25,480 --> 00:18:27,029 all many of us have been there right like if you have an iOS and an Android 1000 00:18:27,029 --> 00:18:27,039 like if you have an iOS and an Android 1001 00:18:27,039 --> 00:18:28,350 like if you have an iOS and an Android team like how do you get them to ship 1002 00:18:28,350 --> 00:18:28,360 team like how do you get them to ship 1003 00:18:28,360 --> 00:18:30,789 team like how do you get them to ship the same feuture in the same quarter 1004 00:18:30,789 --> 00:18:30,799 the same feuture in the same quarter 1005 00:18:30,799 --> 00:18:33,510 the same feuture in the same quarter right it's tough it's 1006 00:18:33,510 --> 00:18:33,520 right it's tough it's 1007 00:18:33,520 --> 00:18:36,390 right it's tough it's tough okay 1008 00:18:36,390 --> 00:18:36,400 tough okay 1009 00:18:36,400 --> 00:18:41,230 tough okay so I hope I've convinced you now um that 1010 00:18:41,230 --> 00:18:41,240 so I hope I've convinced you now um that 1011 00:18:41,240 --> 00:18:44,830 so I hope I've convinced you now um that complexity is like a a complex problem 1012 00:18:44,830 --> 00:18:44,840 complexity is like a a complex problem 1013 00:18:44,840 --> 00:18:47,190 complexity is like a a complex problem itself and that it manifests in a lot of 1014 00:18:47,190 --> 00:18:47,200 itself and that it manifests in a lot of 1015 00:18:47,200 --> 00:18:49,270 itself and that it manifests in a lot of different ways so we're going to change 1016 00:18:49,270 --> 00:18:49,280 different ways so we're going to change 1017 00:18:49,280 --> 00:18:51,950 different ways so we're going to change gears a little bit and talk about seat 1018 00:18:51,950 --> 00:18:51,960 gears a little bit and talk about seat 1019 00:18:51,960 --> 00:18:54,350 gears a little bit and talk about seat belts and more specifically why seat 1020 00:18:54,350 --> 00:18:54,360 belts and more specifically why seat 1021 00:18:54,360 --> 00:18:56,350 belts and more specifically why seat belts don't save 1022 00:18:56,350 --> 00:18:56,360 belts don't save 1023 00:18:56,360 --> 00:18:58,350 belts don't save lives and I haven't asked risk here 1024 00:18:58,350 --> 00:18:58,360 lives and I haven't asked risk here 1025 00:18:58,360 --> 00:18:59,270 lives and I haven't asked risk here because this is a little bit of a 1026 00:18:59,270 --> 00:18:59,280 because this is a little bit of a 1027 00:18:59,280 --> 00:19:02,990 because this is a little bit of a controversial um research topic um but 1028 00:19:02,990 --> 00:19:03,000 controversial um research topic um but 1029 00:19:03,000 --> 00:19:05,470 controversial um research topic um but the sort of upshot of this is that in at 1030 00:19:05,470 --> 00:19:05,480 the sort of upshot of this is that in at 1031 00:19:05,480 --> 00:19:07,230 the sort of upshot of this is that in at least some studies they found that after 1032 00:19:07,230 --> 00:19:07,240 least some studies they found that after 1033 00:19:07,240 --> 00:19:09,789 least some studies they found that after seat belts became mandatory in 1034 00:19:09,789 --> 00:19:09,799 seat belts became mandatory in 1035 00:19:09,799 --> 00:19:12,350 seat belts became mandatory in cars uh people still died on the roads 1036 00:19:12,350 --> 00:19:12,360 cars uh people still died on the roads 1037 00:19:12,360 --> 00:19:14,750 cars uh people still died on the roads at similar rates and that was really 1038 00:19:14,750 --> 00:19:14,760 at similar rates and that was really 1039 00:19:14,760 --> 00:19:16,149 at similar rates and that was really surprising because 1040 00:19:16,149 --> 00:19:16,159 surprising because 1041 00:19:16,159 --> 00:19:18,590 surprising because like you know seat bels are are a good 1042 00:19:18,590 --> 00:19:18,600 like you know seat bels are are a good 1043 00:19:18,600 --> 00:19:21,149 like you know seat bels are are a good idea like they keep you safer in the car 1044 00:19:21,149 --> 00:19:21,159 idea like they keep you safer in the car 1045 00:19:21,159 --> 00:19:23,310 idea like they keep you safer in the car and so somebody proposed this idea uh 1046 00:19:23,310 --> 00:19:23,320 and so somebody proposed this idea uh 1047 00:19:23,320 --> 00:19:25,029 and so somebody proposed this idea uh called risk 1048 00:19:25,029 --> 00:19:25,039 called risk 1049 00:19:25,039 --> 00:19:27,070 called risk homeostasis the idea behind risk 1050 00:19:27,070 --> 00:19:27,080 homeostasis the idea behind risk 1051 00:19:27,080 --> 00:19:30,110 homeostasis the idea behind risk homeostasis is that actually we die at a 1052 00:19:30,110 --> 00:19:30,120 homeostasis is that actually we die at a 1053 00:19:30,120 --> 00:19:31,990 homeostasis is that actually we die at a rate on the road related to how much 1054 00:19:31,990 --> 00:19:32,000 rate on the road related to how much 1055 00:19:32,000 --> 00:19:34,430 rate on the road related to how much risk we're willing to take and so if you 1056 00:19:34,430 --> 00:19:34,440 risk we're willing to take and so if you 1057 00:19:34,440 --> 00:19:36,029 risk we're willing to take and so if you now have a seat belt and you're driving 1058 00:19:36,029 --> 00:19:36,039 now have a seat belt and you're driving 1059 00:19:36,039 --> 00:19:38,350 now have a seat belt and you're driving a car that's safer you're going to go a 1060 00:19:38,350 --> 00:19:38,360 a car that's safer you're going to go a 1061 00:19:38,360 --> 00:19:39,870 a car that's safer you're going to go a little faster and you're going to take 1062 00:19:39,870 --> 00:19:39,880 little faster and you're going to take 1063 00:19:39,880 --> 00:19:41,590 little faster and you're going to take the corners a little tighter because you 1064 00:19:41,590 --> 00:19:41,600 the corners a little tighter because you 1065 00:19:41,600 --> 00:19:45,470 the corners a little tighter because you feel better right so the the issue with 1066 00:19:45,470 --> 00:19:45,480 feel better right so the the issue with 1067 00:19:45,480 --> 00:19:47,710 feel better right so the the issue with making people safer was that they then 1068 00:19:47,710 --> 00:19:47,720 making people safer was that they then 1069 00:19:47,720 --> 00:19:50,669 making people safer was that they then took on more risky Behavior conserving 1070 00:19:50,669 --> 00:19:50,679 took on more risky Behavior conserving 1071 00:19:50,679 --> 00:19:53,590 took on more risky Behavior conserving their total risk tolerance and so I 1072 00:19:53,590 --> 00:19:53,600 their total risk tolerance and so I 1073 00:19:53,600 --> 00:19:55,669 their total risk tolerance and so I think we see a similar thing in software 1074 00:19:55,669 --> 00:19:55,679 think we see a similar thing in software 1075 00:19:55,679 --> 00:19:57,470 think we see a similar thing in software right we I call this complexity 1076 00:19:57,470 --> 00:19:57,480 right we I call this complexity 1077 00:19:57,480 --> 00:19:59,950 right we I call this complexity homeostasis which is to say that if you 1078 00:19:59,950 --> 00:19:59,960 homeostasis which is to say that if you 1079 00:19:59,960 --> 00:20:02,310 homeostasis which is to say that if you have kind of a system that's evolving 1080 00:20:02,310 --> 00:20:02,320 have kind of a system that's evolving 1081 00:20:02,320 --> 00:20:05,070 have kind of a system that's evolving over time you know everything's fine 1082 00:20:05,070 --> 00:20:05,080 over time you know everything's fine 1083 00:20:05,080 --> 00:20:07,230 over time you know everything's fine we're going along life is good and then 1084 00:20:07,230 --> 00:20:07,240 we're going along life is good and then 1085 00:20:07,240 --> 00:20:09,870 we're going along life is good and then we add some more things and you know 1086 00:20:09,870 --> 00:20:09,880 we add some more things and you know 1087 00:20:09,880 --> 00:20:12,870 we add some more things and you know we're still happy and then oh oh yeah 1088 00:20:12,870 --> 00:20:12,880 we're still happy and then oh oh yeah 1089 00:20:12,880 --> 00:20:14,710 we're still happy and then oh oh yeah now it's I don't like it 1090 00:20:14,710 --> 00:20:14,720 now it's I don't like it 1091 00:20:14,720 --> 00:20:17,630 now it's I don't like it anymore it's not good it feels bad now 1092 00:20:17,630 --> 00:20:17,640 anymore it's not good it feels bad now 1093 00:20:17,640 --> 00:20:19,149 anymore it's not good it feels bad now it's time for that rewrite that we were 1094 00:20:19,149 --> 00:20:19,159 it's time for that rewrite that we were 1095 00:20:19,159 --> 00:20:20,870 it's time for that rewrite that we were hearing about right it's time to bring 1096 00:20:20,870 --> 00:20:20,880 hearing about right it's time to bring 1097 00:20:20,880 --> 00:20:22,390 hearing about right it's time to bring things back 1098 00:20:22,390 --> 00:20:22,400 things back 1099 00:20:22,400 --> 00:20:25,070 things back ah okay now we can go back to making 1100 00:20:25,070 --> 00:20:25,080 ah okay now we can go back to making 1101 00:20:25,080 --> 00:20:30,430 ah okay now we can go back to making things complicated again 1102 00:20:30,430 --> 00:20:30,440 1103 00:20:30,440 --> 00:20:32,390 and so this is kind of like a set point 1104 00:20:32,390 --> 00:20:32,400 and so this is kind of like a set point 1105 00:20:32,400 --> 00:20:34,470 and so this is kind of like a set point so homeostasis is the process where or 1106 00:20:34,470 --> 00:20:34,480 so homeostasis is the process where or 1107 00:20:34,480 --> 00:20:36,029 so homeostasis is the process where or it's any process where you sort of 1108 00:20:36,029 --> 00:20:36,039 it's any process where you sort of 1109 00:20:36,039 --> 00:20:38,029 it's any process where you sort of maintain a set point and it's commonly 1110 00:20:38,029 --> 00:20:38,039 maintain a set point and it's commonly 1111 00:20:38,039 --> 00:20:40,029 maintain a set point and it's commonly used to talk also about how our bodies 1112 00:20:40,029 --> 00:20:40,039 used to talk also about how our bodies 1113 00:20:40,039 --> 00:20:42,390 used to talk also about how our bodies regulate temperature but I think our 1114 00:20:42,390 --> 00:20:42,400 regulate temperature but I think our 1115 00:20:42,400 --> 00:20:44,470 regulate temperature but I think our organizations regulate 1116 00:20:44,470 --> 00:20:44,480 organizations regulate 1117 00:20:44,480 --> 00:20:46,950 organizations regulate complexity right and so all of us have 1118 00:20:46,950 --> 00:20:46,960 complexity right and so all of us have 1119 00:20:46,960 --> 00:20:48,350 complexity right and so all of us have different intuitions and when people 1120 00:20:48,350 --> 00:20:48,360 different intuitions and when people 1121 00:20:48,360 --> 00:20:49,830 different intuitions and when people talk about wanting things to be simple 1122 00:20:49,830 --> 00:20:49,840 talk about wanting things to be simple 1123 00:20:49,840 --> 00:20:51,270 talk about wanting things to be simple there's like an aesthetic preference 1124 00:20:51,270 --> 00:20:51,280 there's like an aesthetic preference 1125 00:20:51,280 --> 00:20:53,830 there's like an aesthetic preference here and different people perceive that 1126 00:20:53,830 --> 00:20:53,840 here and different people perceive that 1127 00:20:53,840 --> 00:20:55,669 here and different people perceive that and pursue that 1128 00:20:55,669 --> 00:20:55,679 and pursue that 1129 00:20:55,679 --> 00:20:58,710 and pursue that differently and like Deen's you know 1130 00:20:58,710 --> 00:20:58,720 differently and like Deen's you know 1131 00:20:58,720 --> 00:21:01,230 differently and like Deen's you know quest for just the right number of op 1132 00:21:01,230 --> 00:21:01,240 quest for just the right number of op 1133 00:21:01,240 --> 00:21:02,830 quest for just the right number of op codes that we heard about yesterday is a 1134 00:21:02,830 --> 00:21:02,840 codes that we heard about yesterday is a 1135 00:21:02,840 --> 00:21:04,470 codes that we heard about yesterday is a great example where like in a certain 1136 00:21:04,470 --> 00:21:04,480 great example where like in a certain 1137 00:21:04,480 --> 00:21:06,390 great example where like in a certain sense you know the correct number of op 1138 00:21:06,390 --> 00:21:06,400 sense you know the correct number of op 1139 00:21:06,400 --> 00:21:08,110 sense you know the correct number of op codes is one and you could do that if 1140 00:21:08,110 --> 00:21:08,120 codes is one and you could do that if 1141 00:21:08,120 --> 00:21:10,149 codes is one and you could do that if you really wanted to but then you've got 1142 00:21:10,149 --> 00:21:10,159 you really wanted to but then you've got 1143 00:21:10,159 --> 00:21:12,110 you really wanted to but then you've got kind of like the CIS you know model 1144 00:21:12,110 --> 00:21:12,120 kind of like the CIS you know model 1145 00:21:12,120 --> 00:21:13,430 kind of like the CIS you know model where actually the correct number is 1146 00:21:13,430 --> 00:21:13,440 where actually the correct number is 1147 00:21:13,440 --> 00:21:14,590 where actually the correct number is hundreds because you're maintaining 1148 00:21:14,590 --> 00:21:14,600 hundreds because you're maintaining 1149 00:21:14,600 --> 00:21:16,110 hundreds because you're maintaining backwards compatibility and anything 1150 00:21:16,110 --> 00:21:16,120 backwards compatibility and anything 1151 00:21:16,120 --> 00:21:18,430 backwards compatibility and anything that can squeeze you you know either 1152 00:21:18,430 --> 00:21:18,440 that can squeeze you you know either 1153 00:21:18,440 --> 00:21:20,149 that can squeeze you you know either better numbers out of a bench Park 1154 00:21:20,149 --> 00:21:20,159 better numbers out of a bench Park 1155 00:21:20,159 --> 00:21:22,669 better numbers out of a bench Park Benchmark or more CPU sales is is 1156 00:21:22,669 --> 00:21:22,679 Benchmark or more CPU sales is is 1157 00:21:22,679 --> 00:21:24,870 Benchmark or more CPU sales is is acceptable and so you know how you 1158 00:21:24,870 --> 00:21:24,880 acceptable and so you know how you 1159 00:21:24,880 --> 00:21:27,269 acceptable and so you know how you perceive what constitutes complexity or 1160 00:21:27,269 --> 00:21:27,279 perceive what constitutes complexity or 1161 00:21:27,279 --> 00:21:29,430 perceive what constitutes complexity or how much complexity you're willing to 1162 00:21:29,430 --> 00:21:29,440 how much complexity you're willing to 1163 00:21:29,440 --> 00:21:31,669 how much complexity you're willing to tolerate is an individual or an 1164 00:21:31,669 --> 00:21:31,679 tolerate is an individual or an 1165 00:21:31,679 --> 00:21:34,190 tolerate is an individual or an organizational decision and you know 1166 00:21:34,190 --> 00:21:34,200 organizational decision and you know 1167 00:21:34,200 --> 00:21:37,390 organizational decision and you know some things can actually move that up 1168 00:21:37,390 --> 00:21:37,400 some things can actually move that up 1169 00:21:37,400 --> 00:21:39,430 some things can actually move that up like I have abandoned projects because 1170 00:21:39,430 --> 00:21:39,440 like I have abandoned projects because 1171 00:21:39,440 --> 00:21:40,990 like I have abandoned projects because they got complicated and annoying to 1172 00:21:40,990 --> 00:21:41,000 they got complicated and annoying to 1173 00:21:41,000 --> 00:21:43,990 they got complicated and annoying to work on but like some people might just 1174 00:21:43,990 --> 00:21:44,000 work on but like some people might just 1175 00:21:44,000 --> 00:21:45,710 work on but like some people might just tolerate that and not perceive it I've 1176 00:21:45,710 --> 00:21:45,720 tolerate that and not perceive it I've 1177 00:21:45,720 --> 00:21:47,470 tolerate that and not perceive it I've worked with some brilliant people who 1178 00:21:47,470 --> 00:21:47,480 worked with some brilliant people who 1179 00:21:47,480 --> 00:21:49,950 worked with some brilliant people who write the most complicated insane 1180 00:21:49,950 --> 00:21:49,960 write the most complicated insane 1181 00:21:49,960 --> 00:21:52,350 write the most complicated insane convoluted code from my perspective but 1182 00:21:52,350 --> 00:21:52,360 convoluted code from my perspective but 1183 00:21:52,360 --> 00:21:53,870 convoluted code from my perspective but when I sort of go to them I'm like this 1184 00:21:53,870 --> 00:21:53,880 when I sort of go to them I'm like this 1185 00:21:53,880 --> 00:21:55,669 when I sort of go to them I'm like this is so complicated and weird why did you 1186 00:21:55,669 --> 00:21:55,679 is so complicated and weird why did you 1187 00:21:55,679 --> 00:21:57,909 is so complicated and weird why did you do it this way they don't see it because 1188 00:21:57,909 --> 00:21:57,919 do it this way they don't see it because 1189 00:21:57,919 --> 00:21:59,190 do it this way they don't see it because they're just much smarter than me 1190 00:21:59,190 --> 00:21:59,200 they're just much smarter than me 1191 00:21:59,200 --> 00:22:00,510 they're just much smarter than me they're they're able to hold that 1192 00:22:00,510 --> 00:22:00,520 they're they're able to hold that 1193 00:22:00,520 --> 00:22:02,909 they're they're able to hold that complexity in their head comfortably and 1194 00:22:02,909 --> 00:22:02,919 complexity in their head comfortably and 1195 00:22:02,919 --> 00:22:04,830 complexity in their head comfortably and so for them it doesn't feel that way 1196 00:22:04,830 --> 00:22:04,840 so for them it doesn't feel that way 1197 00:22:04,840 --> 00:22:06,549 so for them it doesn't feel that way another way a system can become more 1198 00:22:06,549 --> 00:22:06,559 another way a system can become more 1199 00:22:06,559 --> 00:22:09,549 another way a system can become more complicated if it's worth a lot of money 1200 00:22:09,549 --> 00:22:09,559 complicated if it's worth a lot of money 1201 00:22:09,559 --> 00:22:11,149 complicated if it's worth a lot of money right because like you can just hire 1202 00:22:11,149 --> 00:22:11,159 right because like you can just hire 1203 00:22:11,159 --> 00:22:14,269 right because like you can just hire another poor Schmo to sling Java into 1204 00:22:14,269 --> 00:22:14,279 another poor Schmo to sling Java into 1205 00:22:14,279 --> 00:22:17,110 another poor Schmo to sling Java into the code base I mean has anybody here 1206 00:22:17,110 --> 00:22:17,120 the code base I mean has anybody here 1207 00:22:17,120 --> 00:22:18,830 the code base I mean has anybody here worked on an EA Sports 1208 00:22:18,830 --> 00:22:18,840 worked on an EA Sports 1209 00:22:18,840 --> 00:22:21,669 worked on an EA Sports title yeah I'm so 1210 00:22:21,669 --> 00:22:21,679 title yeah I'm so 1211 00:22:21,679 --> 00:22:25,269 title yeah I'm so sorry I have heard some things man and 1212 00:22:25,269 --> 00:22:25,279 sorry I have heard some things man and 1213 00:22:25,279 --> 00:22:27,830 sorry I have heard some things man and it ships every year on on Deadline 1214 00:22:27,830 --> 00:22:27,840 it ships every year on on Deadline 1215 00:22:27,840 --> 00:22:29,669 it ships every year on on Deadline without fail right like that's not an 1216 00:22:29,669 --> 00:22:29,679 without fail right like that's not an 1217 00:22:29,679 --> 00:22:31,350 without fail right like that's not an environment that leads to like healthy 1218 00:22:31,350 --> 00:22:31,360 environment that leads to like healthy 1219 00:22:31,360 --> 00:22:33,029 environment that leads to like healthy refactoring or or reduction of 1220 00:22:33,029 --> 00:22:33,039 refactoring or or reduction of 1221 00:22:33,039 --> 00:22:35,750 refactoring or or reduction of complexity but you know what it makes a 1222 00:22:35,750 --> 00:22:35,760 complexity but you know what it makes a 1223 00:22:35,760 --> 00:22:37,510 complexity but you know what it makes a boatload of 1224 00:22:37,510 --> 00:22:37,520 boatload of 1225 00:22:37,520 --> 00:22:39,750 boatload of money and so they'll hire people to work 1226 00:22:39,750 --> 00:22:39,760 money and so they'll hire people to work 1227 00:22:39,760 --> 00:22:40,909 money and so they'll hire people to work on it because they can afford to and 1228 00:22:40,909 --> 00:22:40,919 on it because they can afford to and 1229 00:22:40,919 --> 00:22:42,070 on it because they can afford to and you'll work on it because they'll pay 1230 00:22:42,070 --> 00:22:42,080 you'll work on it because they'll pay 1231 00:22:42,080 --> 00:22:45,710 you'll work on it because they'll pay you enough because they know they 1232 00:22:45,710 --> 00:22:45,720 you enough because they know they 1233 00:22:45,720 --> 00:22:48,029 you enough because they know they know right and so part of this as well 1234 00:22:48,029 --> 00:22:48,039 know right and so part of this as well 1235 00:22:48,039 --> 00:22:49,390 know right and so part of this as well is that also if you just have more 1236 00:22:49,390 --> 00:22:49,400 is that also if you just have more 1237 00:22:49,400 --> 00:22:51,510 is that also if you just have more people working on things you know you 1238 00:22:51,510 --> 00:22:51,520 people working on things you know you 1239 00:22:51,520 --> 00:22:53,269 people working on things you know you can tolerate more complexity I can hold 1240 00:22:53,269 --> 00:22:53,279 can tolerate more complexity I can hold 1241 00:22:53,279 --> 00:22:54,510 can tolerate more complexity I can hold part of it in my head and you can hold 1242 00:22:54,510 --> 00:22:54,520 part of it in my head and you can hold 1243 00:22:54,520 --> 00:22:56,190 part of it in my head and you can hold part of it your head and I kind of want 1244 00:22:56,190 --> 00:22:56,200 part of it your head and I kind of want 1245 00:22:56,200 --> 00:22:58,710 part of it your head and I kind of want to distinguish like there's sort of the 1246 00:22:58,710 --> 00:22:58,720 to distinguish like there's sort of the 1247 00:22:58,720 --> 00:23:00,350 to distinguish like there's sort of the breadth of complexity and if you have a 1248 00:23:00,350 --> 00:23:00,360 breadth of complexity and if you have a 1249 00:23:00,360 --> 00:23:02,310 breadth of complexity and if you have a well- factored system you can decompose 1250 00:23:02,310 --> 00:23:02,320 well- factored system you can decompose 1251 00:23:02,320 --> 00:23:05,149 well- factored system you can decompose the complexity either into layers or or 1252 00:23:05,149 --> 00:23:05,159 the complexity either into layers or or 1253 00:23:05,159 --> 00:23:07,190 the complexity either into layers or or modules right like each individual Lego 1254 00:23:07,190 --> 00:23:07,200 modules right like each individual Lego 1255 00:23:07,200 --> 00:23:08,590 modules right like each individual Lego brick is simple but you can build very 1256 00:23:08,590 --> 00:23:08,600 brick is simple but you can build very 1257 00:23:08,600 --> 00:23:10,750 brick is simple but you can build very complicated things from it right and so 1258 00:23:10,750 --> 00:23:10,760 complicated things from it right and so 1259 00:23:10,760 --> 00:23:12,750 complicated things from it right and so that's sort of the system complexity 1260 00:23:12,750 --> 00:23:12,760 that's sort of the system complexity 1261 00:23:12,760 --> 00:23:16,230 that's sort of the system complexity versus the component complexity CSS is 1262 00:23:16,230 --> 00:23:16,240 versus the component complexity CSS is 1263 00:23:16,240 --> 00:23:18,110 versus the component complexity CSS is incredibly complicated and by that what 1264 00:23:18,110 --> 00:23:18,120 incredibly complicated and by that what 1265 00:23:18,120 --> 00:23:20,350 incredibly complicated and by that what I mean it's complex you can't tell from 1266 00:23:20,350 --> 00:23:20,360 I mean it's complex you can't tell from 1267 00:23:20,360 --> 00:23:22,830 I mean it's complex you can't tell from looking at one rule what it will 1268 00:23:22,830 --> 00:23:22,840 looking at one rule what it will 1269 00:23:22,840 --> 00:23:25,149 looking at one rule what it will manifest as in a final 1270 00:23:25,149 --> 00:23:25,159 manifest as in a final 1271 00:23:25,159 --> 00:23:27,390 manifest as in a final document so okay well we can just solve 1272 00:23:27,390 --> 00:23:27,400 document so okay well we can just solve 1273 00:23:27,400 --> 00:23:28,950 document so okay well we can just solve this problem with better tools right 1274 00:23:28,950 --> 00:23:28,960 this problem with better tools right 1275 00:23:28,960 --> 00:23:31,510 this problem with better tools right well no because as we've talked about we 1276 00:23:31,510 --> 00:23:31,520 well no because as we've talked about we 1277 00:23:31,520 --> 00:23:33,390 well no because as we've talked about we you know we have this homeostasis point 1278 00:23:33,390 --> 00:23:33,400 you know we have this homeostasis point 1279 00:23:33,400 --> 00:23:35,430 you know we have this homeostasis point that we fall towards over time and we 1280 00:23:35,430 --> 00:23:35,440 that we fall towards over time and we 1281 00:23:35,440 --> 00:23:37,390 that we fall towards over time and we can choose where to set it but we do 1282 00:23:37,390 --> 00:23:37,400 can choose where to set it but we do 1283 00:23:37,400 --> 00:23:39,669 can choose where to set it but we do move towards it and you know the 1284 00:23:39,669 --> 00:23:39,679 move towards it and you know the 1285 00:23:39,679 --> 00:23:41,070 move towards it and you know the research on this actually goes all the 1286 00:23:41,070 --> 00:23:41,080 research on this actually goes all the 1287 00:23:41,080 --> 00:23:43,269 research on this actually goes all the way back to like the 1860s this is uh 1288 00:23:43,269 --> 00:23:43,279 way back to like the 1860s this is uh 1289 00:23:43,279 --> 00:23:45,789 way back to like the 1860s this is uh Jeff's Paradox which was like why did 1290 00:23:45,789 --> 00:23:45,799 Jeff's Paradox which was like why did 1291 00:23:45,799 --> 00:23:49,470 Jeff's Paradox which was like why did coal consumption not decrease when 1292 00:23:49,470 --> 00:23:49,480 coal consumption not decrease when 1293 00:23:49,480 --> 00:23:52,190 coal consumption not decrease when engines became more efficient the answer 1294 00:23:52,190 --> 00:23:52,200 engines became more efficient the answer 1295 00:23:52,200 --> 00:23:56,470 engines became more efficient the answer is people did more work right and so I 1296 00:23:56,470 --> 00:23:56,480 is people did more work right and so I 1297 00:23:56,480 --> 00:23:59,350 is people did more work right and so I feel very much that this is sort of the 1298 00:23:59,350 --> 00:23:59,360 feel very much that this is sort of the 1299 00:23:59,360 --> 00:24:01,510 feel very much that this is sort of the inevitable conclusion we have to draw 1300 00:24:01,510 --> 00:24:01,520 inevitable conclusion we have to draw 1301 00:24:01,520 --> 00:24:02,909 inevitable conclusion we have to draw from looking at the problem which is 1302 00:24:02,909 --> 00:24:02,919 from looking at the problem which is 1303 00:24:02,919 --> 00:24:04,750 from looking at the problem which is that the degree of complexity of a 1304 00:24:04,750 --> 00:24:04,760 that the degree of complexity of a 1305 00:24:04,760 --> 00:24:06,510 that the degree of complexity of a system is tied to who we are and what 1306 00:24:06,510 --> 00:24:06,520 system is tied to who we are and what 1307 00:24:06,520 --> 00:24:08,830 system is tied to who we are and what we're doing over 1308 00:24:08,830 --> 00:24:08,840 we're doing over 1309 00:24:08,840 --> 00:24:12,070 we're doing over time right and so when we buy back some 1310 00:24:12,070 --> 00:24:12,080 time right and so when we buy back some 1311 00:24:12,080 --> 00:24:14,110 time right and so when we buy back some complexity by using better tools or by 1312 00:24:14,110 --> 00:24:14,120 complexity by using better tools or by 1313 00:24:14,120 --> 00:24:15,990 complexity by using better tools or by picking a simpler environment we're 1314 00:24:15,990 --> 00:24:16,000 picking a simpler environment we're 1315 00:24:16,000 --> 00:24:20,029 picking a simpler environment we're going to spend that out again 1316 00:24:20,029 --> 00:24:20,039 going to spend that out again 1317 00:24:20,039 --> 00:24:21,870 going to spend that out again eventually okay so let's talk a little 1318 00:24:21,870 --> 00:24:21,880 eventually okay so let's talk a little 1319 00:24:21,880 --> 00:24:24,230 eventually okay so let's talk a little bit about some theories of complexity 1320 00:24:24,230 --> 00:24:24,240 bit about some theories of complexity 1321 00:24:24,240 --> 00:24:25,630 bit about some theories of complexity because you know this I'm from a 1322 00:24:25,630 --> 00:24:25,640 because you know this I'm from a 1323 00:24:25,640 --> 00:24:27,389 because you know this I'm from a research lab and I like to like read 1324 00:24:27,389 --> 00:24:27,399 research lab and I like to like read 1325 00:24:27,399 --> 00:24:30,230 research lab and I like to like read papers so this is not a new this is not 1326 00:24:30,230 --> 00:24:30,240 papers so this is not a new this is not 1327 00:24:30,240 --> 00:24:32,590 papers so this is not a new this is not a new problem uh have have people heard 1328 00:24:32,590 --> 00:24:32,600 a new problem uh have have people heard 1329 00:24:32,600 --> 00:24:38,250 a new problem uh have have people heard of 1330 00:24:38,250 --> 00:24:38,260 1331 00:24:38,260 --> 00:24:41,690 [Laughter] 1332 00:24:41,690 --> 00:24:41,700 [Laughter] 1333 00:24:41,700 --> 00:24:58,389 [Laughter] [Applause] 1334 00:24:58,389 --> 00:24:58,399 1335 00:24:58,399 --> 00:24:59,830 cost and be problematic is worth 1336 00:24:59,830 --> 00:24:59,840 cost and be problematic is worth 1337 00:24:59,840 --> 00:25:01,510 cost and be problematic is worth thinking about in fact people have been 1338 00:25:01,510 --> 00:25:01,520 thinking about in fact people have been 1339 00:25:01,520 --> 00:25:03,430 thinking about in fact people have been looking at this and thinking about it 1340 00:25:03,430 --> 00:25:03,440 looking at this and thinking about it 1341 00:25:03,440 --> 00:25:06,710 looking at this and thinking about it since the 1980s this is uh mayor liman 1342 00:25:06,710 --> 00:25:06,720 since the 1980s this is uh mayor liman 1343 00:25:06,720 --> 00:25:10,990 since the 1980s this is uh mayor liman in 1980s uh i e volume 68 so like this 1344 00:25:10,990 --> 00:25:11,000 in 1980s uh i e volume 68 so like this 1345 00:25:11,000 --> 00:25:13,549 in 1980s uh i e volume 68 so like this is not a new domain and so even back 1346 00:25:13,549 --> 00:25:13,559 is not a new domain and so even back 1347 00:25:13,559 --> 00:25:16,310 is not a new domain and so even back then this this Edition was from 1980 the 1348 00:25:16,310 --> 00:25:16,320 then this this Edition was from 1980 the 1349 00:25:16,320 --> 00:25:18,470 then this this Edition was from 1980 the first paper published was in 1974 on 1350 00:25:18,470 --> 00:25:18,480 first paper published was in 1974 on 1351 00:25:18,480 --> 00:25:20,269 first paper published was in 1974 on these laws of software engineering we're 1352 00:25:20,269 --> 00:25:20,279 these laws of software engineering we're 1353 00:25:20,279 --> 00:25:22,430 these laws of software engineering we're not going to read these like super close 1354 00:25:22,430 --> 00:25:22,440 not going to read these like super close 1355 00:25:22,440 --> 00:25:24,149 not going to read these like super close there it's more that I want you to 1356 00:25:24,149 --> 00:25:24,159 there it's more that I want you to 1357 00:25:24,159 --> 00:25:26,549 there it's more that I want you to realize that like this kind of 1358 00:25:26,549 --> 00:25:26,559 realize that like this kind of 1359 00:25:26,559 --> 00:25:28,830 realize that like this kind of recognition that systems 1360 00:25:28,830 --> 00:25:28,840 recognition that systems 1361 00:25:28,840 --> 00:25:30,990 recognition that systems grow to meet growing needs if they're 1362 00:25:30,990 --> 00:25:31,000 grow to meet growing needs if they're 1363 00:25:31,000 --> 00:25:32,950 grow to meet growing needs if they're successful is not a new idea it's a 1364 00:25:32,950 --> 00:25:32,960 successful is not a new idea it's a 1365 00:25:32,960 --> 00:25:34,310 successful is not a new idea it's a common problem and whether you're 1366 00:25:34,310 --> 00:25:34,320 common problem and whether you're 1367 00:25:34,320 --> 00:25:36,669 common problem and whether you're working you know in building tools or 1368 00:25:36,669 --> 00:25:36,679 working you know in building tools or 1369 00:25:36,679 --> 00:25:38,590 working you know in building tools or languages you know you might start with 1370 00:25:38,590 --> 00:25:38,600 languages you know you might start with 1371 00:25:38,600 --> 00:25:41,470 languages you know you might start with an elegant and simple thing but as a 1372 00:25:41,470 --> 00:25:41,480 an elegant and simple thing but as a 1373 00:25:41,480 --> 00:25:43,909 an elegant and simple thing but as a system has more demands on it it 1374 00:25:43,909 --> 00:25:43,919 system has more demands on it it 1375 00:25:43,919 --> 00:25:47,830 system has more demands on it it responds by adding right that's that's a 1376 00:25:47,830 --> 00:25:47,840 responds by adding right that's that's a 1377 00:25:47,840 --> 00:25:49,669 responds by adding right that's that's a very common and it's a reasonable 1378 00:25:49,669 --> 00:25:49,679 very common and it's a reasonable 1379 00:25:49,679 --> 00:25:51,070 very common and it's a reasonable consequence and if you don't do those 1380 00:25:51,070 --> 00:25:51,080 consequence and if you don't do those 1381 00:25:51,080 --> 00:25:52,870 consequence and if you don't do those things the thing will often sort of 1382 00:25:52,870 --> 00:25:52,880 things the thing will often sort of 1383 00:25:52,880 --> 00:25:54,110 things the thing will often sort of starve and 1384 00:25:54,110 --> 00:25:54,120 starve and 1385 00:25:54,120 --> 00:25:56,630 starve and die um one great paper if you haven't 1386 00:25:56,630 --> 00:25:56,640 die um one great paper if you haven't 1387 00:25:56,640 --> 00:25:58,590 die um one great paper if you haven't read it yet on this sort of topic is out 1388 00:25:58,590 --> 00:25:58,600 read it yet on this sort of topic is out 1389 00:25:58,600 --> 00:26:01,350 read it yet on this sort of topic is out of the tarpit by Mosley this is from 06 1390 00:26:01,350 --> 00:26:01,360 of the tarpit by Mosley this is from 06 1391 00:26:01,360 --> 00:26:05,230 of the tarpit by Mosley this is from 06 and uh this paper differentiates between 1392 00:26:05,230 --> 00:26:05,240 and uh this paper differentiates between 1393 00:26:05,240 --> 00:26:08,190 and uh this paper differentiates between what is like accidentally complex versus 1394 00:26:08,190 --> 00:26:08,200 what is like accidentally complex versus 1395 00:26:08,200 --> 00:26:10,389 what is like accidentally complex versus essentially complex right so like 1396 00:26:10,389 --> 00:26:10,399 essentially complex right so like 1397 00:26:10,399 --> 00:26:12,990 essentially complex right so like essential complexity is like the 1398 00:26:12,990 --> 00:26:13,000 essential complexity is like the 1399 00:26:13,000 --> 00:26:16,190 essential complexity is like the irreducible like non- illimitable part 1400 00:26:16,190 --> 00:26:16,200 irreducible like non- illimitable part 1401 00:26:16,200 --> 00:26:18,669 irreducible like non- illimitable part of your system you know if you are 1402 00:26:18,669 --> 00:26:18,679 of your system you know if you are 1403 00:26:18,679 --> 00:26:20,350 of your system you know if you are trying to model certain physical 1404 00:26:20,350 --> 00:26:20,360 trying to model certain physical 1405 00:26:20,360 --> 00:26:23,389 trying to model certain physical processes like you know smoke or fire 1406 00:26:23,389 --> 00:26:23,399 processes like you know smoke or fire 1407 00:26:23,399 --> 00:26:25,070 processes like you know smoke or fire like the physics part where you're 1408 00:26:25,070 --> 00:26:25,080 like the physics part where you're 1409 00:26:25,080 --> 00:26:26,590 like the physics part where you're actually doing the work you can't get 1410 00:26:26,590 --> 00:26:26,600 actually doing the work you can't get 1411 00:26:26,600 --> 00:26:27,710 actually doing the work you can't get rid of that you don't want to get rid of 1412 00:26:27,710 --> 00:26:27,720 rid of that you don't want to get rid of 1413 00:26:27,720 --> 00:26:29,310 rid of that you don't want to get rid of that that's what you're here for right 1414 00:26:29,310 --> 00:26:29,320 that that's what you're here for right 1415 00:26:29,320 --> 00:26:31,430 that that's what you're here for right but The Accidental complexity is all 1416 00:26:31,430 --> 00:26:31,440 but The Accidental complexity is all 1417 00:26:31,440 --> 00:26:33,470 but The Accidental complexity is all that other stuff like oh God we got to 1418 00:26:33,470 --> 00:26:33,480 that other stuff like oh God we got to 1419 00:26:33,480 --> 00:26:36,389 that other stuff like oh God we got to compile this so it works on like Windows 1420 00:26:36,389 --> 00:26:36,399 compile this so it works on like Windows 1421 00:26:36,399 --> 00:26:39,510 compile this so it works on like Windows 11 has changed the ABI for this DL we 1422 00:26:39,510 --> 00:26:39,520 11 has changed the ABI for this DL we 1423 00:26:39,520 --> 00:26:41,549 11 has changed the ABI for this DL we like all that stuff where you you know 1424 00:26:41,549 --> 00:26:41,559 like all that stuff where you you know 1425 00:26:41,559 --> 00:26:44,590 like all that stuff where you you know we heard about deine hoisting the um uh 1426 00:26:44,590 --> 00:26:44,600 we heard about deine hoisting the um uh 1427 00:26:44,600 --> 00:26:47,990 we heard about deine hoisting the um uh phone up the uh the Mast to download 11 1428 00:26:47,990 --> 00:26:48,000 phone up the uh the Mast to download 11 1429 00:26:48,000 --> 00:26:50,870 phone up the uh the Mast to download 11 gigs of 1430 00:26:50,870 --> 00:26:50,880 gigs of 1431 00:26:50,880 --> 00:26:54,070 gigs of something right that's mostly accidental 1432 00:26:54,070 --> 00:26:54,080 something right that's mostly accidental 1433 00:26:54,080 --> 00:26:55,950 something right that's mostly accidental complexity for our purposes and so it 1434 00:26:55,950 --> 00:26:55,960 complexity for our purposes and so it 1435 00:26:55,960 --> 00:26:57,389 complexity for our purposes and so it helps as you're working and thinking 1436 00:26:57,389 --> 00:26:57,399 helps as you're working and thinking 1437 00:26:57,399 --> 00:26:59,510 helps as you're working and thinking about complexity to to think about where 1438 00:26:59,510 --> 00:26:59,520 about complexity to to think about where 1439 00:26:59,520 --> 00:27:01,149 about complexity to to think about where you're spending that budget and whether 1440 00:27:01,149 --> 00:27:01,159 you're spending that budget and whether 1441 00:27:01,159 --> 00:27:02,830 you're spending that budget and whether it's whether you're being deliberate in 1442 00:27:02,830 --> 00:27:02,840 it's whether you're being deliberate in 1443 00:27:02,840 --> 00:27:06,230 it's whether you're being deliberate in terms of how you're adopting 1444 00:27:06,230 --> 00:27:06,240 terms of how you're adopting 1445 00:27:06,240 --> 00:27:08,669 terms of how you're adopting complexity the other thing I want to uh 1446 00:27:08,669 --> 00:27:08,679 complexity the other thing I want to uh 1447 00:27:08,679 --> 00:27:12,230 complexity the other thing I want to uh refer to is this great um this great 1448 00:27:12,230 --> 00:27:12,240 refer to is this great um this great 1449 00:27:12,240 --> 00:27:14,549 refer to is this great um this great essay from the Berkeley DB team in the 1450 00:27:14,549 --> 00:27:14,559 essay from the Berkeley DB team in the 1451 00:27:14,559 --> 00:27:17,070 essay from the Berkeley DB team in the architecture of Open Source and honestly 1452 00:27:17,070 --> 00:27:17,080 architecture of Open Source and honestly 1453 00:27:17,080 --> 00:27:18,870 architecture of Open Source and honestly you I highly recommend reading this if 1454 00:27:18,870 --> 00:27:18,880 you I highly recommend reading this if 1455 00:27:18,880 --> 00:27:20,510 you I highly recommend reading this if you just like software engineering the 1456 00:27:20,510 --> 00:27:20,520 you just like software engineering the 1457 00:27:20,520 --> 00:27:22,510 you just like software engineering the architecture of Open Source software is 1458 00:27:22,510 --> 00:27:22,520 architecture of Open Source software is 1459 00:27:22,520 --> 00:27:25,830 architecture of Open Source software is is a a cool series and basically what 1460 00:27:25,830 --> 00:27:25,840 is a a cool series and basically what 1461 00:27:25,840 --> 00:27:28,149 is a a cool series and basically what they do is interview open source 1462 00:27:28,149 --> 00:27:28,159 they do is interview open source 1463 00:27:28,159 --> 00:27:30,710 they do is interview open source communities about their software and 1464 00:27:30,710 --> 00:27:30,720 communities about their software and 1465 00:27:30,720 --> 00:27:31,830 communities about their software and have them write essays about what 1466 00:27:31,830 --> 00:27:31,840 have them write essays about what 1467 00:27:31,840 --> 00:27:32,909 have them write essays about what they've done and then they publish and 1468 00:27:32,909 --> 00:27:32,919 they've done and then they publish and 1469 00:27:32,919 --> 00:27:35,230 they've done and then they publish and share those but I think this Berkeley DB 1470 00:27:35,230 --> 00:27:35,240 share those but I think this Berkeley DB 1471 00:27:35,240 --> 00:27:38,710 share those but I think this Berkeley DB chapter in particular is exceptional and 1472 00:27:38,710 --> 00:27:38,720 chapter in particular is exceptional and 1473 00:27:38,720 --> 00:27:40,990 chapter in particular is exceptional and I I think about this all the time which 1474 00:27:40,990 --> 00:27:41,000 I I think about this all the time which 1475 00:27:41,000 --> 00:27:43,830 I I think about this all the time which is that software architecture degrades 1476 00:27:43,830 --> 00:27:43,840 is that software architecture degrades 1477 00:27:43,840 --> 00:27:46,269 is that software architecture degrades with changes made to software right so 1478 00:27:46,269 --> 00:27:46,279 with changes made to software right so 1479 00:27:46,279 --> 00:27:47,830 with changes made to software right so you might have the most elegant 1480 00:27:47,830 --> 00:27:47,840 you might have the most elegant 1481 00:27:47,840 --> 00:27:49,789 you might have the most elegant brilliant carefully planned system in 1482 00:27:49,789 --> 00:27:49,799 brilliant carefully planned system in 1483 00:27:49,799 --> 00:27:52,430 brilliant carefully planned system in the world but it does not exist at a 1484 00:27:52,430 --> 00:27:52,440 the world but it does not exist at a 1485 00:27:52,440 --> 00:27:54,710 the world but it does not exist at a single point in time in a vacuum and as 1486 00:27:54,710 --> 00:27:54,720 single point in time in a vacuum and as 1487 00:27:54,720 --> 00:27:56,710 single point in time in a vacuum and as new demands come along this architecture 1488 00:27:56,710 --> 00:27:56,720 new demands come along this architecture 1489 00:27:56,720 --> 00:27:59,110 new demands come along this architecture will Decay and so requires a constant 1490 00:27:59,110 --> 00:27:59,120 will Decay and so requires a constant 1491 00:27:59,120 --> 00:28:00,669 will Decay and so requires a constant Shoring up and when you have big 1492 00:28:00,669 --> 00:28:00,679 Shoring up and when you have big 1493 00:28:00,679 --> 00:28:02,430 Shoring up and when you have big interfaces that you've invested heavily 1494 00:28:02,430 --> 00:28:02,440 interfaces that you've invested heavily 1495 00:28:02,440 --> 00:28:04,789 interfaces that you've invested heavily in and they're straining it can be 1496 00:28:04,789 --> 00:28:04,799 in and they're straining it can be 1497 00:28:04,799 --> 00:28:07,269 in and they're straining it can be extremely expensive to change 1498 00:28:07,269 --> 00:28:07,279 extremely expensive to change 1499 00:28:07,279 --> 00:28:09,909 extremely expensive to change them I also just love this this is a 1500 00:28:09,909 --> 00:28:09,919 them I also just love this this is a 1501 00:28:09,919 --> 00:28:11,909 them I also just love this this is a little more handmade specific kind of 1502 00:28:11,909 --> 00:28:11,919 little more handmade specific kind of 1503 00:28:11,919 --> 00:28:14,149 little more handmade specific kind of vibe the Excel team motto at least 1504 00:28:14,149 --> 00:28:14,159 vibe the Excel team motto at least 1505 00:28:14,159 --> 00:28:16,070 vibe the Excel team motto at least according to Joel spolski is find your 1506 00:28:16,070 --> 00:28:16,080 according to Joel spolski is find your 1507 00:28:16,080 --> 00:28:18,549 according to Joel spolski is find your dependencies and eliminate 1508 00:28:18,549 --> 00:28:18,559 dependencies and eliminate 1509 00:28:18,559 --> 00:28:21,710 dependencies and eliminate them uh I have been told on reasonably 1510 00:28:21,710 --> 00:28:21,720 them uh I have been told on reasonably 1511 00:28:21,720 --> 00:28:24,389 them uh I have been told on reasonably good authority that Excel uh actually is 1512 00:28:24,389 --> 00:28:24,399 good authority that Excel uh actually is 1513 00:28:24,399 --> 00:28:26,710 good authority that Excel uh actually is built with its own C compiler that they 1514 00:28:26,710 --> 00:28:26,720 built with its own C compiler that they 1515 00:28:26,720 --> 00:28:28,389 built with its own C compiler that they they didn't even want to rely on other 1516 00:28:28,389 --> 00:28:28,399 they didn't even want to rely on other 1517 00:28:28,399 --> 00:28:30,350 they didn't even want to rely on other teams within Microsoft and you know to 1518 00:28:30,350 --> 00:28:30,360 teams within Microsoft and you know to 1519 00:28:30,360 --> 00:28:33,389 teams within Microsoft and you know to the degree where they've built their own 1520 00:28:33,389 --> 00:28:33,399 the degree where they've built their own 1521 00:28:33,399 --> 00:28:36,070 the degree where they've built their own compilers I'm not saying you necessarily 1522 00:28:36,070 --> 00:28:36,080 compilers I'm not saying you necessarily 1523 00:28:36,080 --> 00:28:37,909 compilers I'm not saying you necessarily should do that I'm not saying you 1524 00:28:37,909 --> 00:28:37,919 should do that I'm not saying you 1525 00:28:37,919 --> 00:28:39,430 should do that I'm not saying you necessarily shouldn't you got to think 1526 00:28:39,430 --> 00:28:39,440 necessarily shouldn't you got to think 1527 00:28:39,440 --> 00:28:41,269 necessarily shouldn't you got to think about how you're spending your 1528 00:28:41,269 --> 00:28:41,279 about how you're spending your 1529 00:28:41,279 --> 00:28:43,269 about how you're spending your budget and the last kind of point I want 1530 00:28:43,269 --> 00:28:43,279 budget and the last kind of point I want 1531 00:28:43,279 --> 00:28:45,350 budget and the last kind of point I want to make sort of on this theme is again 1532 00:28:45,350 --> 00:28:45,360 to make sort of on this theme is again 1533 00:28:45,360 --> 00:28:47,389 to make sort of on this theme is again that complexity isn't necessarily bad 1534 00:28:47,389 --> 00:28:47,399 that complexity isn't necessarily bad 1535 00:28:47,399 --> 00:28:49,350 that complexity isn't necessarily bad right like complexity can lead to all 1536 00:28:49,350 --> 00:28:49,360 right like complexity can lead to all 1537 00:28:49,360 --> 00:28:51,310 right like complexity can lead to all kinds of like wonderful emergent 1538 00:28:51,310 --> 00:28:51,320 kinds of like wonderful emergent 1539 00:28:51,320 --> 00:28:54,350 kinds of like wonderful emergent properties right you the Legend of 1540 00:28:54,350 --> 00:28:54,360 properties right you the Legend of 1541 00:28:54,360 --> 00:28:58,509 properties right you the Legend of Zelda um you know breath of the Wild 1542 00:28:58,509 --> 00:28:58,519 Zelda um you know breath of the Wild 1543 00:28:58,519 --> 00:29:00,710 Zelda um you know breath of the Wild it has had so such a wonderful Community 1544 00:29:00,710 --> 00:29:00,720 it has had so such a wonderful Community 1545 00:29:00,720 --> 00:29:03,110 it has had so such a wonderful Community grow up around it precisely because they 1546 00:29:03,110 --> 00:29:03,120 grow up around it precisely because they 1547 00:29:03,120 --> 00:29:04,950 grow up around it precisely because they managed to tame complexity with their 1548 00:29:04,950 --> 00:29:04,960 managed to tame complexity with their 1549 00:29:04,960 --> 00:29:06,710 managed to tame complexity with their chemistry engine so there's a lot of 1550 00:29:06,710 --> 00:29:06,720 chemistry engine so there's a lot of 1551 00:29:06,720 --> 00:29:09,269 chemistry engine so there's a lot of emergent gameplay properties and 1552 00:29:09,269 --> 00:29:09,279 emergent gameplay properties and 1553 00:29:09,279 --> 00:29:11,549 emergent gameplay properties and experiences that come out of 1554 00:29:11,549 --> 00:29:11,559 experiences that come out of 1555 00:29:11,559 --> 00:29:13,350 experiences that come out of interactions complex interactions 1556 00:29:13,350 --> 00:29:13,360 interactions complex interactions 1557 00:29:13,360 --> 00:29:14,830 interactions complex interactions between systems but the systems are 1558 00:29:14,830 --> 00:29:14,840 between systems but the systems are 1559 00:29:14,840 --> 00:29:16,909 between systems but the systems are factored in a way that enables and 1560 00:29:16,909 --> 00:29:16,919 factored in a way that enables and 1561 00:29:16,919 --> 00:29:19,990 factored in a way that enables and empowers this um and of course if you're 1562 00:29:19,990 --> 00:29:20,000 empowers this um and of course if you're 1563 00:29:20,000 --> 00:29:22,149 empowers this um and of course if you're a Rog likee fan you know people have 1564 00:29:22,149 --> 00:29:22,159 a Rog likee fan you know people have 1565 00:29:22,159 --> 00:29:24,830 a Rog likee fan you know people have been doing this forever 1566 00:29:24,830 --> 00:29:24,840 been doing this forever 1567 00:29:24,840 --> 00:29:29,509 been doing this forever there okay so how well now what 1568 00:29:29,509 --> 00:29:29,519 there okay so how well now what 1569 00:29:29,519 --> 00:29:33,509 there okay so how well now what you know we we've we have now looked at 1570 00:29:33,509 --> 00:29:33,519 you know we we've we have now looked at 1571 00:29:33,519 --> 00:29:36,190 you know we we've we have now looked at complexity I've told you you can't get 1572 00:29:36,190 --> 00:29:36,200 complexity I've told you you can't get 1573 00:29:36,200 --> 00:29:38,990 complexity I've told you you can't get rid of it so we're just going to have to 1574 00:29:38,990 --> 00:29:39,000 rid of it so we're just going to have to 1575 00:29:39,000 --> 00:29:41,310 rid of it so we're just going to have to live with it and you know better tools 1576 00:29:41,310 --> 00:29:41,320 live with it and you know better tools 1577 00:29:41,320 --> 00:29:43,669 live with it and you know better tools won't save us so how are we going to 1578 00:29:43,669 --> 00:29:43,679 won't save us so how are we going to 1579 00:29:43,679 --> 00:29:46,669 won't save us so how are we going to spend this this complexity budget that 1580 00:29:46,669 --> 00:29:46,679 spend this this complexity budget that 1581 00:29:46,679 --> 00:29:47,870 spend this this complexity budget that we 1582 00:29:47,870 --> 00:29:47,880 we 1583 00:29:47,880 --> 00:29:50,630 we have I mean you know one approach is you 1584 00:29:50,630 --> 00:29:50,640 have I mean you know one approach is you 1585 00:29:50,640 --> 00:29:52,509 have I mean you know one approach is you just put your head down and you work 1586 00:29:52,509 --> 00:29:52,519 just put your head down and you work 1587 00:29:52,519 --> 00:29:54,470 just put your head down and you work away and and pretend it's not a problem 1588 00:29:54,470 --> 00:29:54,480 away and and pretend it's not a problem 1589 00:29:54,480 --> 00:29:56,149 away and and pretend it's not a problem and you know that that's a pretty common 1590 00:29:56,149 --> 00:29:56,159 and you know that that's a pretty common 1591 00:29:56,159 --> 00:29:58,029 and you know that that's a pretty common solution to all of our problems in life 1592 00:29:58,029 --> 00:29:58,039 solution to all of our problems in life 1593 00:29:58,039 --> 00:29:59,509 solution to all of our problems in life so we could do that but I'm going to 1594 00:29:59,509 --> 00:29:59,519 so we could do that but I'm going to 1595 00:29:59,519 --> 00:30:01,029 so we could do that but I'm going to maybe try and propose a few ways we can 1596 00:30:01,029 --> 00:30:01,039 maybe try and propose a few ways we can 1597 00:30:01,039 --> 00:30:03,669 maybe try and propose a few ways we can cut the gordian knot here and so um you 1598 00:30:03,669 --> 00:30:03,679 cut the gordian knot here and so um you 1599 00:30:03,679 --> 00:30:05,750 cut the gordian knot here and so um you know the the story of the gordian knot 1600 00:30:05,750 --> 00:30:05,760 know the the story of the gordian knot 1601 00:30:05,760 --> 00:30:08,870 know the the story of the gordian knot was that there was this sort of um this 1602 00:30:08,870 --> 00:30:08,880 was that there was this sort of um this 1603 00:30:08,880 --> 00:30:10,990 was that there was this sort of um this Ox cart with a really complicated knot 1604 00:30:10,990 --> 00:30:11,000 Ox cart with a really complicated knot 1605 00:30:11,000 --> 00:30:13,070 Ox cart with a really complicated knot on the the handle and people were like 1606 00:30:13,070 --> 00:30:13,080 on the the handle and people were like 1607 00:30:13,080 --> 00:30:16,230 on the the handle and people were like oh whoever whoever unties this notot 1608 00:30:16,230 --> 00:30:16,240 oh whoever whoever unties this notot 1609 00:30:16,240 --> 00:30:18,710 oh whoever whoever unties this notot will rule all of Asia and many people 1610 00:30:18,710 --> 00:30:18,720 will rule all of Asia and many people 1611 00:30:18,720 --> 00:30:20,310 will rule all of Asia and many people had come and then Alexander the Great 1612 00:30:20,310 --> 00:30:20,320 had come and then Alexander the Great 1613 00:30:20,320 --> 00:30:21,990 had come and then Alexander the Great came along and depending on the version 1614 00:30:21,990 --> 00:30:22,000 came along and depending on the version 1615 00:30:22,000 --> 00:30:23,310 came along and depending on the version of the story you hear he just like he 1616 00:30:23,310 --> 00:30:23,320 of the story you hear he just like he 1617 00:30:23,320 --> 00:30:25,110 of the story you hear he just like he like okay cool and he cut it with a 1618 00:30:25,110 --> 00:30:25,120 like okay cool and he cut it with a 1619 00:30:25,120 --> 00:30:28,430 like okay cool and he cut it with a knife right and so instead of solving 1620 00:30:28,430 --> 00:30:28,440 knife right and so instead of solving 1621 00:30:28,440 --> 00:30:30,389 knife right and so instead of solving the problem by like trying to be really 1622 00:30:30,389 --> 00:30:30,399 the problem by like trying to be really 1623 00:30:30,399 --> 00:30:31,990 the problem by like trying to be really smart or work really hard like can we 1624 00:30:31,990 --> 00:30:32,000 smart or work really hard like can we 1625 00:30:32,000 --> 00:30:34,310 smart or work really hard like can we just cheat and change the rules like I 1626 00:30:34,310 --> 00:30:34,320 just cheat and change the rules like I 1627 00:30:34,320 --> 00:30:35,870 just cheat and change the rules like I think that's a better 1628 00:30:35,870 --> 00:30:35,880 think that's a better 1629 00:30:35,880 --> 00:30:39,269 think that's a better approach so one approach is to do what 1630 00:30:39,269 --> 00:30:39,279 approach so one approach is to do what 1631 00:30:39,279 --> 00:30:41,750 approach so one approach is to do what folks here like to do is just start over 1632 00:30:41,750 --> 00:30:41,760 folks here like to do is just start over 1633 00:30:41,760 --> 00:30:43,029 folks here like to do is just start over you know you can't actually get rid of 1634 00:30:43,029 --> 00:30:43,039 you know you can't actually get rid of 1635 00:30:43,039 --> 00:30:45,430 you know you can't actually get rid of this problem but you can reset the clock 1636 00:30:45,430 --> 00:30:45,440 this problem but you can reset the clock 1637 00:30:45,440 --> 00:30:48,430 this problem but you can reset the clock on it right just build a new one start 1638 00:30:48,430 --> 00:30:48,440 on it right just build a new one start 1639 00:30:48,440 --> 00:30:49,830 on it right just build a new one start from the beginning everything's easy in 1640 00:30:49,830 --> 00:30:49,840 from the beginning everything's easy in 1641 00:30:49,840 --> 00:30:51,509 from the beginning everything's easy in the beginning it's only when you have 1642 00:30:51,509 --> 00:30:51,519 the beginning it's only when you have 1643 00:30:51,519 --> 00:30:53,830 the beginning it's only when you have users and features that you have 1644 00:30:53,830 --> 00:30:53,840 users and features that you have 1645 00:30:53,840 --> 00:30:56,710 users and features that you have complexity so like you know make a new 1646 00:30:56,710 --> 00:30:56,720 complexity so like you know make a new 1647 00:30:56,720 --> 00:30:59,149 complexity so like you know make a new programming language start a new VM it's 1648 00:30:59,149 --> 00:30:59,159 programming language start a new VM it's 1649 00:30:59,159 --> 00:31:01,029 programming language start a new VM it's good you can't really change this like 1650 00:31:01,029 --> 00:31:01,039 good you can't really change this like 1651 00:31:01,039 --> 00:31:04,590 good you can't really change this like long run pressure but like genuinely you 1652 00:31:04,590 --> 00:31:04,600 long run pressure but like genuinely you 1653 00:31:04,600 --> 00:31:06,430 long run pressure but like genuinely you can reset the clock and I think that's 1654 00:31:06,430 --> 00:31:06,440 can reset the clock and I think that's 1655 00:31:06,440 --> 00:31:09,149 can reset the clock and I think that's part of why things like Excel are 1656 00:31:09,149 --> 00:31:09,159 part of why things like Excel are 1657 00:31:09,159 --> 00:31:10,629 part of why things like Excel are popular and successful is they don't 1658 00:31:10,629 --> 00:31:10,639 popular and successful is they don't 1659 00:31:10,639 --> 00:31:12,789 popular and successful is they don't have package managers right like every 1660 00:31:12,789 --> 00:31:12,799 have package managers right like every 1661 00:31:12,799 --> 00:31:14,509 have package managers right like every time you make a new Excel document it's 1662 00:31:14,509 --> 00:31:14,519 time you make a new Excel document it's 1663 00:31:14,519 --> 00:31:17,470 time you make a new Excel document it's a brand new universe you know with none 1664 00:31:17,470 --> 00:31:17,480 a brand new universe you know with none 1665 00:31:17,480 --> 00:31:19,350 a brand new universe you know with none none of the misery or mistakes that you 1666 00:31:19,350 --> 00:31:19,360 none of the misery or mistakes that you 1667 00:31:19,360 --> 00:31:21,029 none of the misery or mistakes that you made before it's like the Forgiveness of 1668 00:31:21,029 --> 00:31:21,039 made before it's like the Forgiveness of 1669 00:31:21,039 --> 00:31:23,750 made before it's like the Forgiveness of the blank page you know that's and 1670 00:31:23,750 --> 00:31:23,760 the blank page you know that's and 1671 00:31:23,760 --> 00:31:25,789 the blank page you know that's and there's something to that um I went to a 1672 00:31:25,789 --> 00:31:25,799 there's something to that um I went to a 1673 00:31:25,799 --> 00:31:28,230 there's something to that um I went to a talk by John Romero 1674 00:31:28,230 --> 00:31:28,240 talk by John Romero 1675 00:31:28,240 --> 00:31:29,909 talk by John Romero uh at strange Loop not that long ago and 1676 00:31:29,909 --> 00:31:29,919 uh at strange Loop not that long ago and 1677 00:31:29,919 --> 00:31:33,190 uh at strange Loop not that long ago and he talked about how ID software had been 1678 00:31:33,190 --> 00:31:33,200 he talked about how ID software had been 1679 00:31:33,200 --> 00:31:35,950 he talked about how ID software had been making these like shovelware games for 1680 00:31:35,950 --> 00:31:35,960 making these like shovelware games for 1681 00:31:35,960 --> 00:31:38,070 making these like shovelware games for as contractors or the the ID software 1682 00:31:38,070 --> 00:31:38,080 as contractors or the the ID software 1683 00:31:38,080 --> 00:31:40,789 as contractors or the the ID software team him and him and uh Romero and carac 1684 00:31:40,789 --> 00:31:40,799 team him and him and uh Romero and carac 1685 00:31:40,799 --> 00:31:42,830 team him and him and uh Romero and carac had been making these sort of shovelware 1686 00:31:42,830 --> 00:31:42,840 had been making these sort of shovelware 1687 00:31:42,840 --> 00:31:45,149 had been making these sort of shovelware games and their attitude was like well 1688 00:31:45,149 --> 00:31:45,159 games and their attitude was like well 1689 00:31:45,159 --> 00:31:46,310 games and their attitude was like well you should just always start from 1690 00:31:46,310 --> 00:31:46,320 you should just always start from 1691 00:31:46,320 --> 00:31:48,310 you should just always start from scratch you get really good at it you 1692 00:31:48,310 --> 00:31:48,320 scratch you get really good at it you 1693 00:31:48,320 --> 00:31:50,509 scratch you get really good at it you can be really fast and each time you do 1694 00:31:50,509 --> 00:31:50,519 can be really fast and each time you do 1695 00:31:50,519 --> 00:31:52,310 can be really fast and each time you do a little bit better than the one before 1696 00:31:52,310 --> 00:31:52,320 a little bit better than the one before 1697 00:31:52,320 --> 00:31:54,470 a little bit better than the one before and we do I think do better I like I'm 1698 00:31:54,470 --> 00:31:54,480 and we do I think do better I like I'm 1699 00:31:54,480 --> 00:31:56,430 and we do I think do better I like I'm not I I love learning new languages and 1700 00:31:56,430 --> 00:31:56,440 not I I love learning new languages and 1701 00:31:56,440 --> 00:31:58,590 not I I love learning new languages and building new ecosystems and I think a 1702 00:31:58,590 --> 00:31:58,600 building new ecosystems and I think a 1703 00:31:58,600 --> 00:31:59,870 building new ecosystems and I think a big part of the reason why they're 1704 00:31:59,870 --> 00:31:59,880 big part of the reason why they're 1705 00:31:59,880 --> 00:32:01,310 big part of the reason why they're successful is because when you have a 1706 00:32:01,310 --> 00:32:01,320 successful is because when you have a 1707 00:32:01,320 --> 00:32:04,350 successful is because when you have a new language you do have the opportunity 1708 00:32:04,350 --> 00:32:04,360 new language you do have the opportunity 1709 00:32:04,360 --> 00:32:08,029 new language you do have the opportunity to like clear away um like the standard 1710 00:32:08,029 --> 00:32:08,039 to like clear away um like the standard 1711 00:32:08,039 --> 00:32:10,029 to like clear away um like the standard library and also just the ecosystem of 1712 00:32:10,029 --> 00:32:10,039 library and also just the ecosystem of 1713 00:32:10,039 --> 00:32:12,230 library and also just the ecosystem of ideas and people and sort of start from 1714 00:32:12,230 --> 00:32:12,240 ideas and people and sort of start from 1715 00:32:12,240 --> 00:32:14,629 ideas and people and sort of start from a fresh starting point now this won't 1716 00:32:14,629 --> 00:32:14,639 a fresh starting point now this won't 1717 00:32:14,639 --> 00:32:17,990 a fresh starting point now this won't cure complexity in the long run but you 1718 00:32:17,990 --> 00:32:18,000 cure complexity in the long run but you 1719 00:32:18,000 --> 00:32:20,110 cure complexity in the long run but you know it can get better right at least in 1720 00:32:20,110 --> 00:32:20,120 know it can get better right at least in 1721 00:32:20,120 --> 00:32:22,110 know it can get better right at least in the midterm and we can get further so I 1722 00:32:22,110 --> 00:32:22,120 the midterm and we can get further so I 1723 00:32:22,120 --> 00:32:23,669 the midterm and we can get further so I think you know that's pretty cool and 1724 00:32:23,669 --> 00:32:23,679 think you know that's pretty cool and 1725 00:32:23,679 --> 00:32:25,350 think you know that's pretty cool and it's also pretty fun so like I'm I'm all 1726 00:32:25,350 --> 00:32:25,360 it's also pretty fun so like I'm I'm all 1727 00:32:25,360 --> 00:32:27,389 it's also pretty fun so like I'm I'm all for that please please do more of that 1728 00:32:27,389 --> 00:32:27,399 for that please please do more of that 1729 00:32:27,399 --> 00:32:29,149 for that please please do more of that and 1730 00:32:29,149 --> 00:32:29,159 and 1731 00:32:29,159 --> 00:32:31,830 and to some extent it's sort of like you 1732 00:32:31,830 --> 00:32:31,840 to some extent it's sort of like you 1733 00:32:31,840 --> 00:32:34,509 to some extent it's sort of like you know it feels like we live in these uh 1734 00:32:34,509 --> 00:32:34,519 know it feels like we live in these uh 1735 00:32:34,519 --> 00:32:37,110 know it feels like we live in these uh unbreakable regimes where like Unity you 1736 00:32:37,110 --> 00:32:37,120 unbreakable regimes where like Unity you 1737 00:32:37,120 --> 00:32:38,789 unbreakable regimes where like Unity you know rules or where like the big 1738 00:32:38,789 --> 00:32:38,799 know rules or where like the big 1739 00:32:38,799 --> 00:32:40,190 know rules or where like the big companies Google and Microsoft and 1740 00:32:40,190 --> 00:32:40,200 companies Google and Microsoft and 1741 00:32:40,200 --> 00:32:42,350 companies Google and Microsoft and everybody rules but that's the kind of 1742 00:32:42,350 --> 00:32:42,360 everybody rules but that's the kind of 1743 00:32:42,360 --> 00:32:44,110 everybody rules but that's the kind of thing that's true until it isn't and 1744 00:32:44,110 --> 00:32:44,120 thing that's true until it isn't and 1745 00:32:44,120 --> 00:32:45,549 thing that's true until it isn't and there's this lovely quote from Ursula 1746 00:32:45,549 --> 00:32:45,559 there's this lovely quote from Ursula 1747 00:32:45,559 --> 00:32:47,830 there's this lovely quote from Ursula lwin about capitalism which is sort of 1748 00:32:47,830 --> 00:32:47,840 lwin about capitalism which is sort of 1749 00:32:47,840 --> 00:32:49,789 lwin about capitalism which is sort of you know the generalization of these 1750 00:32:49,789 --> 00:32:49,799 you know the generalization of these 1751 00:32:49,799 --> 00:32:53,110 you know the generalization of these problems you know capitalism was itself 1752 00:32:53,110 --> 00:32:53,120 problems you know capitalism was itself 1753 00:32:53,120 --> 00:32:56,310 problems you know capitalism was itself an invention and um you know I'll just 1754 00:32:56,310 --> 00:32:56,320 an invention and um you know I'll just 1755 00:32:56,320 --> 00:32:58,470 an invention and um you know I'll just read it we live in capitalism M its 1756 00:32:58,470 --> 00:32:58,480 read it we live in capitalism M its 1757 00:32:58,480 --> 00:33:01,110 read it we live in capitalism M its power seems inescapable so did the 1758 00:33:01,110 --> 00:33:01,120 power seems inescapable so did the 1759 00:33:01,120 --> 00:33:03,389 power seems inescapable so did the divine right of kings and any human 1760 00:33:03,389 --> 00:33:03,399 divine right of kings and any human 1761 00:33:03,399 --> 00:33:05,549 divine right of kings and any human power can be res resisted and changed by 1762 00:33:05,549 --> 00:33:05,559 power can be res resisted and changed by 1763 00:33:05,559 --> 00:33:06,389 power can be res resisted and changed by human 1764 00:33:06,389 --> 00:33:06,399 human 1765 00:33:06,399 --> 00:33:11,070 human beings right so we we should not doubt 1766 00:33:11,070 --> 00:33:11,080 beings right so we we should not doubt 1767 00:33:11,080 --> 00:33:14,149 beings right so we we should not doubt that the environment can be changed the 1768 00:33:14,149 --> 00:33:14,159 that the environment can be changed the 1769 00:33:14,159 --> 00:33:16,549 that the environment can be changed the environment was created it will be 1770 00:33:16,549 --> 00:33:16,559 environment was created it will be 1771 00:33:16,559 --> 00:33:19,350 environment was created it will be changed we don't know how or when but it 1772 00:33:19,350 --> 00:33:19,360 changed we don't know how or when but it 1773 00:33:19,360 --> 00:33:20,470 changed we don't know how or when but it is 1774 00:33:20,470 --> 00:33:20,480 is 1775 00:33:20,480 --> 00:33:22,430 is inevitable okay so you can start over 1776 00:33:22,430 --> 00:33:22,440 inevitable okay so you can start over 1777 00:33:22,440 --> 00:33:24,789 inevitable okay so you can start over Revolution burn it 1778 00:33:24,789 --> 00:33:24,799 Revolution burn it 1779 00:33:24,799 --> 00:33:28,549 Revolution burn it down or you know just do l 1780 00:33:28,549 --> 00:33:28,559 down or you know just do l 1781 00:33:28,559 --> 00:33:31,470 down or you know just do l do less with less uh do I have my play 1782 00:33:31,470 --> 00:33:31,480 do less with less uh do I have my play 1783 00:33:31,480 --> 00:33:32,909 do less with less uh do I have my play date does do people have these hases 1784 00:33:32,909 --> 00:33:32,919 date does do people have these hases 1785 00:33:32,919 --> 00:33:35,029 date does do people have these hases anybody got a play date yeah this is 1786 00:33:35,029 --> 00:33:35,039 anybody got a play date yeah this is 1787 00:33:35,039 --> 00:33:37,629 anybody got a play date yeah this is great it's black and white it it's 1788 00:33:37,629 --> 00:33:37,639 great it's black and white it it's 1789 00:33:37,639 --> 00:33:40,430 great it's black and white it it's there's only one platform it's small it 1790 00:33:40,430 --> 00:33:40,440 there's only one platform it's small it 1791 00:33:40,440 --> 00:33:42,750 there's only one platform it's small it comes in one color it only has one color 1792 00:33:42,750 --> 00:33:42,760 comes in one color it only has one color 1793 00:33:42,760 --> 00:33:44,310 comes in one color it only has one color black or white depending on how you 1794 00:33:44,310 --> 00:33:44,320 black or white depending on how you 1795 00:33:44,320 --> 00:33:45,909 black or white depending on how you think about it doesn't have a lot of 1796 00:33:45,909 --> 00:33:45,919 think about it doesn't have a lot of 1797 00:33:45,919 --> 00:33:48,470 think about it doesn't have a lot of buttons doesn't have much RAM doesn't 1798 00:33:48,470 --> 00:33:48,480 buttons doesn't have much RAM doesn't 1799 00:33:48,480 --> 00:33:50,269 buttons doesn't have much RAM doesn't really have any there's a little bit of 1800 00:33:50,269 --> 00:33:50,279 really have any there's a little bit of 1801 00:33:50,279 --> 00:33:52,389 really have any there's a little bit of networking and there's only one Hardware 1802 00:33:52,389 --> 00:33:52,399 networking and there's only one Hardware 1803 00:33:52,399 --> 00:33:53,430 networking and there's only one Hardware platform so you don't have to worry 1804 00:33:53,430 --> 00:33:53,440 platform so you don't have to worry 1805 00:33:53,440 --> 00:33:55,590 platform so you don't have to worry about compatibility 1806 00:33:55,590 --> 00:33:55,600 about compatibility 1807 00:33:55,600 --> 00:33:58,549 about compatibility problems is 1808 00:33:58,549 --> 00:33:58,559 problems is 1809 00:33:58,559 --> 00:33:59,830 problems is there there is the emulator which 1810 00:33:59,830 --> 00:33:59,840 there there is the emulator which 1811 00:33:59,840 --> 00:34:01,149 there there is the emulator which behaves 1812 00:34:01,149 --> 00:34:01,159 behaves 1813 00:34:01,159 --> 00:34:03,269 behaves differently and due to like sourcing 1814 00:34:03,269 --> 00:34:03,279 differently and due to like sourcing 1815 00:34:03,279 --> 00:34:05,310 differently and due to like sourcing problems they had to get a different 1816 00:34:05,310 --> 00:34:05,320 problems they had to get a different 1817 00:34:05,320 --> 00:34:07,310 problems they had to get a different micro controller but it transpiles 1818 00:34:07,310 --> 00:34:07,320 micro controller but it transpiles 1819 00:34:07,320 --> 00:34:08,950 micro controller but it transpiles natively they're doing a really good job 1820 00:34:08,950 --> 00:34:08,960 natively they're doing a really good job 1821 00:34:08,960 --> 00:34:10,470 natively they're doing a really good job anyway it's a heck of a lot simpler than 1822 00:34:10,470 --> 00:34:10,480 anyway it's a heck of a lot simpler than 1823 00:34:10,480 --> 00:34:16,069 anyway it's a heck of a lot simpler than building for PS5 you know Xbox PC switch 1824 00:34:16,069 --> 00:34:16,079 building for PS5 you know Xbox PC switch 1825 00:34:16,079 --> 00:34:18,909 building for PS5 you know Xbox PC switch 3DS all on one code base like it is 1826 00:34:18,909 --> 00:34:18,919 3DS all on one code base like it is 1827 00:34:18,919 --> 00:34:20,829 3DS all on one code base like it is genuinely awesome and because it's so 1828 00:34:20,829 --> 00:34:20,839 genuinely awesome and because it's so 1829 00:34:20,839 --> 00:34:23,550 genuinely awesome and because it's so small it's like you know kind of 1830 00:34:23,550 --> 00:34:23,560 small it's like you know kind of 1831 00:34:23,560 --> 00:34:25,589 small it's like you know kind of appealing and when you have less scope 1832 00:34:25,589 --> 00:34:25,599 appealing and when you have less scope 1833 00:34:25,599 --> 00:34:27,829 appealing and when you have less scope you can choose to spend that energy that 1834 00:34:27,829 --> 00:34:27,839 you can choose to spend that energy that 1835 00:34:27,839 --> 00:34:29,669 you can choose to spend that energy that complexity budget you can put it into 1836 00:34:29,669 --> 00:34:29,679 complexity budget you can put it into 1837 00:34:29,679 --> 00:34:32,310 complexity budget you can put it into polish right and like on a small 1838 00:34:32,310 --> 00:34:32,320 polish right and like on a small 1839 00:34:32,320 --> 00:34:35,950 polish right and like on a small platform a small idea can 1840 00:34:35,950 --> 00:34:35,960 1841 00:34:35,960 --> 00:34:38,069 shine so okay 1842 00:34:38,069 --> 00:34:38,079 shine so okay 1843 00:34:38,079 --> 00:34:41,829 shine so okay well we can't solve complexity but we 1844 00:34:41,829 --> 00:34:41,839 well we can't solve complexity but we 1845 00:34:41,839 --> 00:34:46,190 well we can't solve complexity but we can make things 1846 00:34:46,190 --> 00:34:46,200 1847 00:34:46,200 --> 00:34:48,950 worse this is actually from augmenting 1848 00:34:48,950 --> 00:34:48,960 worse this is actually from augmenting 1849 00:34:48,960 --> 00:34:51,869 worse this is actually from augmenting Human intellect uh by angelart in 1962 1850 00:34:51,869 --> 00:34:51,879 Human intellect uh by angelart in 1962 1851 00:34:51,879 --> 00:34:54,750 Human intellect uh by angelart in 1962 and it's demonstrating um that you know 1852 00:34:54,750 --> 00:34:54,760 and it's demonstrating um that you know 1853 00:34:54,760 --> 00:34:56,790 and it's demonstrating um that you know you can in fact change people's 1854 00:34:56,790 --> 00:34:56,800 you can in fact change people's 1855 00:34:56,800 --> 00:35:00,270 you can in fact change people's experience um with uh design 1856 00:35:00,270 --> 00:35:00,280 experience um with uh design 1857 00:35:00,280 --> 00:35:03,550 experience um with uh design interventions I said change not 1858 00:35:03,550 --> 00:35:03,560 interventions I said change not 1859 00:35:03,560 --> 00:35:06,550 interventions I said change not improve so you you can we we've made 1860 00:35:06,550 --> 00:35:06,560 improve so you you can we we've made 1861 00:35:06,560 --> 00:35:08,270 improve so you you can we we've made things pretty bad in terms of software 1862 00:35:08,270 --> 00:35:08,280 things pretty bad in terms of software 1863 00:35:08,280 --> 00:35:10,510 things pretty bad in terms of software development this is the uh my favorite 1864 00:35:10,510 --> 00:35:10,520 development this is the uh my favorite 1865 00:35:10,520 --> 00:35:12,630 development this is the uh my favorite slide always to show this is the uh 1866 00:35:12,630 --> 00:35:12,640 slide always to show this is the uh 1867 00:35:12,640 --> 00:35:15,150 slide always to show this is the uh Cloud native cloud 1868 00:35:15,150 --> 00:35:15,160 Cloud native cloud 1869 00:35:15,160 --> 00:35:18,310 Cloud native cloud cloud Foundation Cloud native landscape 1870 00:35:18,310 --> 00:35:18,320 cloud Foundation Cloud native landscape 1871 00:35:18,320 --> 00:35:21,230 cloud Foundation Cloud native landscape I always get this wrong um this is 1872 00:35:21,230 --> 00:35:21,240 I always get this wrong um this is 1873 00:35:21,240 --> 00:35:24,829 I always get this wrong um this is ostensibly I think 20 trillion worth of 1874 00:35:24,829 --> 00:35:24,839 ostensibly I think 20 trillion worth of 1875 00:35:24,839 --> 00:35:27,109 ostensibly I think 20 trillion worth of companies anyway please memorize all of 1876 00:35:27,109 --> 00:35:27,119 companies anyway please memorize all of 1877 00:35:27,119 --> 00:35:28,430 companies anyway please memorize all of this it'll be quiz at the end if you 1878 00:35:28,430 --> 00:35:28,440 this it'll be quiz at the end if you 1879 00:35:28,440 --> 00:35:32,230 this it'll be quiz at the end if you want to make a web application in 1880 00:35:32,230 --> 00:35:32,240 1881 00:35:32,240 --> 00:35:34,510 2022 I had to zoom out the browser just 1882 00:35:34,510 --> 00:35:34,520 2022 I had to zoom out the browser just 1883 00:35:34,520 --> 00:35:36,349 2022 I had to zoom out the browser just to fit it all on screen for the 1884 00:35:36,349 --> 00:35:36,359 to fit it all on screen for the 1885 00:35:36,359 --> 00:35:38,670 to fit it all on screen for the fun so I'm going to talk a little bit 1886 00:35:38,670 --> 00:35:38,680 fun so I'm going to talk a little bit 1887 00:35:38,680 --> 00:35:40,030 fun so I'm going to talk a little bit now about our research which kind of 1888 00:35:40,030 --> 00:35:40,040 now about our research which kind of 1889 00:35:40,040 --> 00:35:41,870 now about our research which kind of ties back into this because I think it 1890 00:35:41,870 --> 00:35:41,880 ties back into this because I think it 1891 00:35:41,880 --> 00:35:44,630 ties back into this because I think it might be interesting um our approach is 1892 00:35:44,630 --> 00:35:44,640 might be interesting um our approach is 1893 00:35:44,640 --> 00:35:48,270 might be interesting um our approach is less the kind of like reboot uh uh model 1894 00:35:48,270 --> 00:35:48,280 less the kind of like reboot uh uh model 1895 00:35:48,280 --> 00:35:49,990 less the kind of like reboot uh uh model and more of the maybe do a little less 1896 00:35:49,990 --> 00:35:50,000 and more of the maybe do a little less 1897 00:35:50,000 --> 00:35:53,790 and more of the maybe do a little less with less model and one of our sort of 1898 00:35:53,790 --> 00:35:53,800 with less model and one of our sort of 1899 00:35:53,800 --> 00:35:56,990 with less model and one of our sort of research interests kind of Builds on 1900 00:35:56,990 --> 00:35:57,000 research interests kind of Builds on 1901 00:35:57,000 --> 00:35:58,750 research interests kind of Builds on these sort of tools tools for thought a 1902 00:35:58,750 --> 00:35:58,760 these sort of tools tools for thought a 1903 00:35:58,760 --> 00:36:02,309 these sort of tools tools for thought a big part of um what we're interested in 1904 00:36:02,309 --> 00:36:02,319 big part of um what we're interested in 1905 00:36:02,319 --> 00:36:04,109 big part of um what we're interested in as a research group is not Simplicity 1906 00:36:04,109 --> 00:36:04,119 as a research group is not Simplicity 1907 00:36:04,119 --> 00:36:06,390 as a research group is not Simplicity versus complexity or decentralization or 1908 00:36:06,390 --> 00:36:06,400 versus complexity or decentralization or 1909 00:36:06,400 --> 00:36:08,829 versus complexity or decentralization or anything like that but we do find that 1910 00:36:08,829 --> 00:36:08,839 anything like that but we do find that 1911 00:36:08,839 --> 00:36:10,870 anything like that but we do find that we have to work in that space because 1912 00:36:10,870 --> 00:36:10,880 we have to work in that space because 1913 00:36:10,880 --> 00:36:12,829 we have to work in that space because what we want are tools that we have 1914 00:36:12,829 --> 00:36:12,839 what we want are tools that we have 1915 00:36:12,839 --> 00:36:15,030 what we want are tools that we have agency over that we have ownership of 1916 00:36:15,030 --> 00:36:15,040 agency over that we have ownership of 1917 00:36:15,040 --> 00:36:18,470 agency over that we have ownership of that are ours and can't be taken and so 1918 00:36:18,470 --> 00:36:18,480 that are ours and can't be taken and so 1919 00:36:18,480 --> 00:36:20,829 that are ours and can't be taken and so we call our research there uh local 1920 00:36:20,829 --> 00:36:20,839 we call our research there uh local 1921 00:36:20,839 --> 00:36:24,109 we call our research there uh local first software and the idea is basically 1922 00:36:24,109 --> 00:36:24,119 first software and the idea is basically 1923 00:36:24,119 --> 00:36:25,710 first software and the idea is basically that instead of having to go learn that 1924 00:36:25,710 --> 00:36:25,720 that instead of having to go learn that 1925 00:36:25,720 --> 00:36:28,510 that instead of having to go learn that whole chart of Technology 1926 00:36:28,510 --> 00:36:28,520 whole chart of Technology 1927 00:36:28,520 --> 00:36:31,030 whole chart of Technology that you know you can't actually do any 1928 00:36:31,030 --> 00:36:31,040 that you know you can't actually do any 1929 00:36:31,040 --> 00:36:33,069 that you know you can't actually do any of that stuff if you just run it on your 1930 00:36:33,069 --> 00:36:33,079 of that stuff if you just run it on your 1931 00:36:33,079 --> 00:36:34,510 of that stuff if you just run it on your computer cuz that stuff's all in the 1932 00:36:34,510 --> 00:36:34,520 computer cuz that stuff's all in the 1933 00:36:34,520 --> 00:36:36,550 computer cuz that stuff's all in the cloud so if you want to build software 1934 00:36:36,550 --> 00:36:36,560 cloud so if you want to build software 1935 00:36:36,560 --> 00:36:37,910 cloud so if you want to build software that works on your 1936 00:36:37,910 --> 00:36:37,920 that works on your 1937 00:36:37,920 --> 00:36:41,790 that works on your computer not only do you not get to use 1938 00:36:41,790 --> 00:36:41,800 computer not only do you not get to use 1939 00:36:41,800 --> 00:36:44,790 computer not only do you not get to use all that stuff you don't have to use all 1940 00:36:44,790 --> 00:36:44,800 all that stuff you don't have to use all 1941 00:36:44,800 --> 00:36:45,710 all that stuff you don't have to use all that 1942 00:36:45,710 --> 00:36:45,720 that 1943 00:36:45,720 --> 00:36:48,589 that stuff and so this you know it's sort of 1944 00:36:48,589 --> 00:36:48,599 stuff and so this you know it's sort of 1945 00:36:48,599 --> 00:36:52,069 stuff and so this you know it's sort of like simplification like via 1946 00:36:52,069 --> 00:36:52,079 like simplification like via 1947 00:36:52,079 --> 00:36:54,950 like simplification like via amputation so we just cut off most of 1948 00:36:54,950 --> 00:36:54,960 amputation so we just cut off most of 1949 00:36:54,960 --> 00:36:57,950 amputation so we just cut off most of the cloud and then we build things Lo 1950 00:36:57,950 --> 00:36:57,960 the cloud and then we build things Lo 1951 00:36:57,960 --> 00:37:00,030 the cloud and then we build things Lo and so you know we've dabbled in a bunch 1952 00:37:00,030 --> 00:37:00,040 and so you know we've dabbled in a bunch 1953 00:37:00,040 --> 00:37:02,190 and so you know we've dabbled in a bunch of different platforms over the years um 1954 00:37:02,190 --> 00:37:02,200 of different platforms over the years um 1955 00:37:02,200 --> 00:37:03,870 of different platforms over the years um right now we're building things in the 1956 00:37:03,870 --> 00:37:03,880 right now we're building things in the 1957 00:37:03,880 --> 00:37:06,710 right now we're building things in the browser but storing everything in like 1958 00:37:06,710 --> 00:37:06,720 browser but storing everything in like 1959 00:37:06,720 --> 00:37:08,990 browser but storing everything in like indexdb but one of our kind of core 1960 00:37:08,990 --> 00:37:09,000 indexdb but one of our kind of core 1961 00:37:09,000 --> 00:37:12,230 indexdb but one of our kind of core beliefs is that um you know 1962 00:37:12,230 --> 00:37:12,240 beliefs is that um you know 1963 00:37:12,240 --> 00:37:14,950 beliefs is that um you know collaboration is such an important part 1964 00:37:14,950 --> 00:37:14,960 collaboration is such an important part 1965 00:37:14,960 --> 00:37:19,150 collaboration is such an important part of um thinking and making and doing that 1966 00:37:19,150 --> 00:37:19,160 of um thinking and making and doing that 1967 00:37:19,160 --> 00:37:20,710 of um thinking and making and doing that it should be like a really fundamental 1968 00:37:20,710 --> 00:37:20,720 it should be like a really fundamental 1969 00:37:20,720 --> 00:37:23,589 it should be like a really fundamental part of our platforms and so we've been 1970 00:37:23,589 --> 00:37:23,599 part of our platforms and so we've been 1971 00:37:23,599 --> 00:37:25,630 part of our platforms and so we've been exploring technology that allows you to 1972 00:37:25,630 --> 00:37:25,640 exploring technology that allows you to 1973 00:37:25,640 --> 00:37:27,030 exploring technology that allows you to build software that runs on your 1974 00:37:27,030 --> 00:37:27,040 build software that runs on your 1975 00:37:27,040 --> 00:37:28,150 build software that runs on your computer 1976 00:37:28,150 --> 00:37:28,160 computer 1977 00:37:28,160 --> 00:37:30,349 computer but then collaborates with other people 1978 00:37:30,349 --> 00:37:30,359 but then collaborates with other people 1979 00:37:30,359 --> 00:37:32,309 but then collaborates with other people you know even allowing online offline 1980 00:37:32,309 --> 00:37:32,319 you know even allowing online offline 1981 00:37:32,319 --> 00:37:36,589 you know even allowing online offline kind of cuts and um the the model 1982 00:37:36,589 --> 00:37:36,599 kind of cuts and um the the model 1983 00:37:36,599 --> 00:37:38,910 kind of cuts and um the the model underpinning that is a a data structure 1984 00:37:38,910 --> 00:37:38,920 underpinning that is a a data structure 1985 00:37:38,920 --> 00:37:40,950 underpinning that is a a data structure called automerge it's sort of like a 1986 00:37:40,950 --> 00:37:40,960 called automerge it's sort of like a 1987 00:37:40,960 --> 00:37:43,109 called automerge it's sort of like a portable versioned Json like data 1988 00:37:43,109 --> 00:37:43,119 portable versioned Json like data 1989 00:37:43,119 --> 00:37:44,870 portable versioned Json like data structure you could think of it as like 1990 00:37:44,870 --> 00:37:44,880 structure you could think of it as like 1991 00:37:44,880 --> 00:37:48,430 structure you could think of it as like get for your data um I I don't I'm happy 1992 00:37:48,430 --> 00:37:48,440 get for your data um I I don't I'm happy 1993 00:37:48,440 --> 00:37:51,230 get for your data um I I don't I'm happy to talk at length about this stuff uh 1994 00:37:51,230 --> 00:37:51,240 to talk at length about this stuff uh 1995 00:37:51,240 --> 00:37:53,510 to talk at length about this stuff uh but I don't really want to Harang you 1996 00:37:53,510 --> 00:37:53,520 but I don't really want to Harang you 1997 00:37:53,520 --> 00:37:55,550 but I don't really want to Harang you too much on you know sort of our 1998 00:37:55,550 --> 00:37:55,560 too much on you know sort of our 1999 00:37:55,560 --> 00:37:56,829 too much on you know sort of our particular kind of like development 2000 00:37:56,829 --> 00:37:56,839 particular kind of like development 2001 00:37:56,839 --> 00:38:00,270 particular kind of like development interests but uh it's really incredible 2002 00:38:00,270 --> 00:38:00,280 interests but uh it's really incredible 2003 00:38:00,280 --> 00:38:04,430 interests but uh it's really incredible just like how it feels to build software 2004 00:38:04,430 --> 00:38:04,440 just like how it feels to build software 2005 00:38:04,440 --> 00:38:06,870 just like how it feels to build software that's fast and simple and runs on your 2006 00:38:06,870 --> 00:38:06,880 that's fast and simple and runs on your 2007 00:38:06,880 --> 00:38:09,630 that's fast and simple and runs on your computer if you like me have spent the 2008 00:38:09,630 --> 00:38:09,640 computer if you like me have spent the 2009 00:38:09,640 --> 00:38:11,270 computer if you like me have spent the last you know chunk of your career 2010 00:38:11,270 --> 00:38:11,280 last you know chunk of your career 2011 00:38:11,280 --> 00:38:14,270 last you know chunk of your career building cloud services and and you know 2012 00:38:14,270 --> 00:38:14,280 building cloud services and and you know 2013 00:38:14,280 --> 00:38:16,910 building cloud services and and you know running things in the sky I had this 2014 00:38:16,910 --> 00:38:16,920 running things in the sky I had this 2015 00:38:16,920 --> 00:38:19,990 running things in the sky I had this like really memorable outage where 2016 00:38:19,990 --> 00:38:20,000 like really memorable outage where 2017 00:38:20,000 --> 00:38:22,910 like really memorable outage where Amazon turned off Us East one dirty 2018 00:38:22,910 --> 00:38:22,920 Amazon turned off Us East one dirty 2019 00:38:22,920 --> 00:38:24,430 Amazon turned off Us East one dirty because the generators didn't come on in 2020 00:38:24,430 --> 00:38:24,440 because the generators didn't come on in 2021 00:38:24,440 --> 00:38:27,190 because the generators didn't come on in a hurricane and you know we were sort of 2022 00:38:27,190 --> 00:38:27,200 a hurricane and you know we were sort of 2023 00:38:27,200 --> 00:38:30,950 a hurricane and you know we were sort of like 3 days into some God forsaken like 2024 00:38:30,950 --> 00:38:30,960 like 3 days into some God forsaken like 2025 00:38:30,960 --> 00:38:32,950 like 3 days into some God forsaken like system rebuild from backups of 2026 00:38:32,950 --> 00:38:32,960 system rebuild from backups of 2027 00:38:32,960 --> 00:38:34,550 system rebuild from backups of everybody's databases and my cooworker 2028 00:38:34,550 --> 00:38:34,560 everybody's databases and my cooworker 2029 00:38:34,560 --> 00:38:36,109 everybody's databases and my cooworker turns to me and he 2030 00:38:36,109 --> 00:38:36,119 turns to me and he 2031 00:38:36,119 --> 00:38:40,430 turns to me and he goes I'm fixing computers that don't 2032 00:38:40,430 --> 00:38:40,440 goes I'm fixing computers that don't 2033 00:38:40,440 --> 00:38:43,630 goes I'm fixing computers that don't exist in a data center I've never been 2034 00:38:43,630 --> 00:38:43,640 exist in a data center I've never been 2035 00:38:43,640 --> 00:38:48,990 exist in a data center I've never been to for people I've never 2036 00:38:48,990 --> 00:38:49,000 2037 00:38:49,000 --> 00:38:51,230 met and he just had the like thousand 2038 00:38:51,230 --> 00:38:51,240 met and he just had the like thousand 2039 00:38:51,240 --> 00:38:53,470 met and he just had the like thousand yards stareing his eyes and I was like 2040 00:38:53,470 --> 00:38:53,480 yards stareing his eyes and I was like 2041 00:38:53,480 --> 00:38:56,309 yards stareing his eyes and I was like yeah do you need some more coffee 2042 00:38:56,309 --> 00:38:56,319 yeah do you need some more coffee 2043 00:38:56,319 --> 00:38:59,190 yeah do you need some more coffee yeah but and so you know like in a sense 2044 00:38:59,190 --> 00:38:59,200 yeah but and so you know like in a sense 2045 00:38:59,200 --> 00:39:00,470 yeah but and so you know like in a sense working on this stuff is almost like 2046 00:39:00,470 --> 00:39:00,480 working on this stuff is almost like 2047 00:39:00,480 --> 00:39:01,950 working on this stuff is almost like Penance for me because I created all 2048 00:39:01,950 --> 00:39:01,960 Penance for me because I created all 2049 00:39:01,960 --> 00:39:05,309 Penance for me because I created all these single points of 2050 00:39:05,309 --> 00:39:05,319 2051 00:39:05,319 --> 00:39:08,950 failure anyway so let's recap a little 2052 00:39:08,950 --> 00:39:08,960 failure anyway so let's recap a little 2053 00:39:08,960 --> 00:39:10,589 failure anyway so let's recap a little bit of all of this how do we live our 2054 00:39:10,589 --> 00:39:10,599 bit of all of this how do we live our 2055 00:39:10,599 --> 00:39:14,829 bit of all of this how do we live our lives in this complicated world right so 2056 00:39:14,829 --> 00:39:14,839 lives in this complicated world right so 2057 00:39:14,839 --> 00:39:18,550 lives in this complicated world right so complexity occurs when our systems have 2058 00:39:18,550 --> 00:39:18,560 complexity occurs when our systems have 2059 00:39:18,560 --> 00:39:19,950 complexity occurs when our systems have internal 2060 00:39:19,950 --> 00:39:19,960 internal 2061 00:39:19,960 --> 00:39:22,030 internal interactions right complexity doesn't 2062 00:39:22,030 --> 00:39:22,040 interactions right complexity doesn't 2063 00:39:22,040 --> 00:39:24,470 interactions right complexity doesn't mean oh there's a lot of stuff it's when 2064 00:39:24,470 --> 00:39:24,480 mean oh there's a lot of stuff it's when 2065 00:39:24,480 --> 00:39:26,349 mean oh there's a lot of stuff it's when all that stuff starts to bump against 2066 00:39:26,349 --> 00:39:26,359 all that stuff starts to bump against 2067 00:39:26,359 --> 00:39:27,910 all that stuff starts to bump against each other and cause unpredictable 2068 00:39:27,910 --> 00:39:27,920 each other and cause unpredictable 2069 00:39:27,920 --> 00:39:31,910 each other and cause unpredictable outcomes and complexity is also a 2070 00:39:31,910 --> 00:39:31,920 outcomes and complexity is also a 2071 00:39:31,920 --> 00:39:34,470 outcomes and complexity is also a natural consequence of system incentives 2072 00:39:34,470 --> 00:39:34,480 natural consequence of system incentives 2073 00:39:34,480 --> 00:39:36,150 natural consequence of system incentives if you have a lot of people using a 2074 00:39:36,150 --> 00:39:36,160 if you have a lot of people using a 2075 00:39:36,160 --> 00:39:37,670 if you have a lot of people using a thing and you're listening to what they 2076 00:39:37,670 --> 00:39:37,680 thing and you're listening to what they 2077 00:39:37,680 --> 00:39:40,309 thing and you're listening to what they need and you're you know like evolving 2078 00:39:40,309 --> 00:39:40,319 need and you're you know like evolving 2079 00:39:40,319 --> 00:39:42,470 need and you're you know like evolving as you learn more you're going to end up 2080 00:39:42,470 --> 00:39:42,480 as you learn more you're going to end up 2081 00:39:42,480 --> 00:39:43,670 as you learn more you're going to end up with something 2082 00:39:43,670 --> 00:39:43,680 with something 2083 00:39:43,680 --> 00:39:47,349 with something complex and better tools won't change 2084 00:39:47,349 --> 00:39:47,359 complex and better tools won't change 2085 00:39:47,359 --> 00:39:49,630 complex and better tools won't change this right the complexity is a 2086 00:39:49,630 --> 00:39:49,640 this right the complexity is a 2087 00:39:49,640 --> 00:39:50,910 this right the complexity is a consequence of who we are and the 2088 00:39:50,910 --> 00:39:50,920 consequence of who we are and the 2089 00:39:50,920 --> 00:39:54,069 consequence of who we are and the choices we make sure you can you can 2090 00:39:54,069 --> 00:39:54,079 choices we make sure you can you can 2091 00:39:54,079 --> 00:39:55,710 choices we make sure you can you can burn through your budget faster but like 2092 00:39:55,710 --> 00:39:55,720 burn through your budget faster but like 2093 00:39:55,720 --> 00:39:57,550 burn through your budget faster but like ultimately where your project ends up on 2094 00:39:57,550 --> 00:39:57,560 ultimately where your project ends up on 2095 00:39:57,560 --> 00:39:59,230 ultimately where your project ends up on the complexity scale is more about how 2096 00:39:59,230 --> 00:39:59,240 the complexity scale is more about how 2097 00:39:59,240 --> 00:40:00,829 the complexity scale is more about how much time and how many ideas are 2098 00:40:00,829 --> 00:40:00,839 much time and how many ideas are 2099 00:40:00,839 --> 00:40:03,589 much time and how many ideas are invested into it than anything 2100 00:40:03,589 --> 00:40:03,599 invested into it than anything 2101 00:40:03,599 --> 00:40:06,470 invested into it than anything else so we can't beat complexity but we 2102 00:40:06,470 --> 00:40:06,480 else so we can't beat complexity but we 2103 00:40:06,480 --> 00:40:09,670 else so we can't beat complexity but we can get beaten by it right and so you 2104 00:40:09,670 --> 00:40:09,680 can get beaten by it right and so you 2105 00:40:09,680 --> 00:40:11,150 can get beaten by it right and so you know what are our coping strategies well 2106 00:40:11,150 --> 00:40:11,160 know what are our coping strategies well 2107 00:40:11,160 --> 00:40:14,470 know what are our coping strategies well we can start over we can eradicate 2108 00:40:14,470 --> 00:40:14,480 we can start over we can eradicate 2109 00:40:14,480 --> 00:40:17,270 we can start over we can eradicate dependencies we can cut scope do less 2110 00:40:17,270 --> 00:40:17,280 dependencies we can cut scope do less 2111 00:40:17,280 --> 00:40:19,349 dependencies we can cut scope do less right we can simplify our architecture 2112 00:40:19,349 --> 00:40:19,359 right we can simplify our architecture 2113 00:40:19,359 --> 00:40:21,190 right we can simplify our architecture and a really big one is being conscious 2114 00:40:21,190 --> 00:40:21,200 and a really big one is being conscious 2115 00:40:21,200 --> 00:40:23,670 and a really big one is being conscious of and learning to kind of identify when 2116 00:40:23,670 --> 00:40:23,680 of and learning to kind of identify when 2117 00:40:23,680 --> 00:40:25,710 of and learning to kind of identify when you're getting into these like 2118 00:40:25,710 --> 00:40:25,720 you're getting into these like 2119 00:40:25,720 --> 00:40:28,190 you're getting into these like multiplicator environments 2120 00:40:28,190 --> 00:40:28,200 multiplicator environments 2121 00:40:28,200 --> 00:40:29,710 multiplicator environments right like it once you start porting 2122 00:40:29,710 --> 00:40:29,720 right like it once you start porting 2123 00:40:29,720 --> 00:40:31,309 right like it once you start porting things to multiple platforms and having 2124 00:40:31,309 --> 00:40:31,319 things to multiple platforms and having 2125 00:40:31,319 --> 00:40:33,030 things to multiple platforms and having to build those like per platform 2126 00:40:33,030 --> 00:40:33,040 to build those like per platform 2127 00:40:33,040 --> 00:40:34,390 to build those like per platform abstractions how do you manage that 2128 00:40:34,390 --> 00:40:34,400 abstractions how do you manage that 2129 00:40:34,400 --> 00:40:36,990 abstractions how do you manage that complexity back down how do you isolate 2130 00:40:36,990 --> 00:40:37,000 complexity back down how do you isolate 2131 00:40:37,000 --> 00:40:39,910 complexity back down how do you isolate complexity and a big part of success is 2132 00:40:39,910 --> 00:40:39,920 complexity and a big part of success is 2133 00:40:39,920 --> 00:40:41,150 complexity and a big part of success is isolating 2134 00:40:41,150 --> 00:40:41,160 isolating 2135 00:40:41,160 --> 00:40:43,270 isolating complexity but I also want to you know 2136 00:40:43,270 --> 00:40:43,280 complexity but I also want to you know 2137 00:40:43,280 --> 00:40:45,750 complexity but I also want to you know give a shout out to gazing into the 2138 00:40:45,750 --> 00:40:45,760 give a shout out to gazing into the 2139 00:40:45,760 --> 00:40:48,910 give a shout out to gazing into the abyss and you know you can you can uh go 2140 00:40:48,910 --> 00:40:48,920 abyss and you know you can you can uh go 2141 00:40:48,920 --> 00:40:51,109 abyss and you know you can you can uh go go for it right like Embrace complexity 2142 00:40:51,109 --> 00:40:51,119 go for it right like Embrace complexity 2143 00:40:51,119 --> 00:40:53,069 go for it right like Embrace complexity harness it yeah it's a deal with with an 2144 00:40:53,069 --> 00:40:53,079 harness it yeah it's a deal with with an 2145 00:40:53,079 --> 00:40:55,190 harness it yeah it's a deal with with an elder god and you may accomplish great 2146 00:40:55,190 --> 00:40:55,200 elder god and you may accomplish great 2147 00:40:55,200 --> 00:40:56,829 elder god and you may accomplish great and terrible things but at a great and 2148 00:40:56,829 --> 00:40:56,839 and terrible things but at a great and 2149 00:40:56,839 --> 00:40:59,390 and terrible things but at a great and terrible price you know that's fine but 2150 00:40:59,390 --> 00:40:59,400 terrible price you know that's fine but 2151 00:40:59,400 --> 00:41:01,829 terrible price you know that's fine but you when you do this you got to be real 2152 00:41:01,829 --> 00:41:01,839 you when you do this you got to be real 2153 00:41:01,839 --> 00:41:04,550 you when you do this you got to be real careful right and and you want to be 2154 00:41:04,550 --> 00:41:04,560 careful right and and you want to be 2155 00:41:04,560 --> 00:41:06,670 careful right and and you want to be really deliberate but deliberate about 2156 00:41:06,670 --> 00:41:06,680 really deliberate but deliberate about 2157 00:41:06,680 --> 00:41:09,670 really deliberate but deliberate about how and when you uh take on that 2158 00:41:09,670 --> 00:41:09,680 how and when you uh take on that 2159 00:41:09,680 --> 00:41:12,390 how and when you uh take on that complexity so I guess in in closing we 2160 00:41:12,390 --> 00:41:12,400 complexity so I guess in in closing we 2161 00:41:12,400 --> 00:41:15,150 complexity so I guess in in closing we can't solve complexity but we can build 2162 00:41:15,150 --> 00:41:15,160 can't solve complexity but we can build 2163 00:41:15,160 --> 00:41:17,950 can't solve complexity but we can build better software uh or to put it in the 2164 00:41:17,950 --> 00:41:17,960 better software uh or to put it in the 2165 00:41:17,960 --> 00:41:19,950 better software uh or to put it in the the words of cyclist Greg lemand it 2166 00:41:19,950 --> 00:41:19,960 the words of cyclist Greg lemand it 2167 00:41:19,960 --> 00:41:25,990 the words of cyclist Greg lemand it never gets easier you just go 2168 00:41:25,990 --> 00:41:26,000 2169 00:41:26,000 --> 00:41:31,119 faster uh there and that's all